尝试在DigitalOcean云服务器下的新创build的CentOS节点中使用PHP设置Apache VirtualHosting环境。
麻烦的是,虽然虚拟主机本身是工作的,PHP不是 。
服务器设置:
所采取的步骤:
以root用户身份login,
yum -y install httpd php 文件: /etc/httpd/conf.d/vhosts.conf
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] ServerName example.org ServerAlias www.example.org DocumentRoot /srv/www/example.org/public_html/ ErrorLog /srv/www/example.org/logs/error.log CustomLog /srv/www/example.org/logs/access.log combined </VirtualHost>
如下所示,
mkdir -p /srv/www/example.org/public_html mkdir -p /srv/www/example.org/logs
.php和.htmltesting文件,如下所示: /srv/www/example.org/public_html/ )下的文件
echo "<HTML>It work's</HTML>" > /srv/www/example.org/public_html/index.html echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php
接下来,当我将浏览器指向index.html ,它可以正常工作。 但是当我将浏览器指向index.php我得到一个空白页面 。
故障排除
(我已经做了/检查没有任何运气)
DocumentRoot 755和文件644 .php页面请求 /var/log/messages没有错误 php_admin_flag engine on 另请参阅下面的/etc/httpd/conf.d/php.conf的内容
<IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> AddHandler php5-script .php AddType text/html .php DirectoryIndex index.php
根据我的经验,当PHP遇到严重的潜在错误时会呈现空白页面。 通常很容易修复,但不幸的是,Apache日志,PHP日志或系统日志中通常没有logging任何内容,这使得故障排除过程变得困难。
find你的php.iniconfiguration文件使用:
php -i | grep "php.ini"
这应该产生这样的事情:
Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini
用你最喜欢的文本编辑器编辑这个configuration文件(在这种情况下为/etc/php.ini),确保显示错误和启动错误。 条目应该是这样的:
display_errors = On display_startup_errors = On
最后重新启动Apache,以便读取新的PHPconfiguration并通过curl或浏览器访问您的页面。 这应该会产生一个错误消息,这将有助于在故障排除过程。
你应该做的第一件事是检查你在Apacheconfiguration中设置的Apache错误日志; 复制如下:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] ServerName example.org ServerAlias www.example.org DocumentRoot /srv/www/example.org/public_html/ ErrorLog /srv/www/example.org/logs/error.log CustomLog /srv/www/example.org/logs/access.log combined </VirtualHost>
PHP在Apache下运行,所以任何popup的错误都会显示在服务器日志中。 我build议login到服务器和使用tail像这样:
tail -f -n 200 /srv/www/example.org/logs/error.log
但那是一般的Apache日志吗? 或者是DigitalOcean的configuration? 因为/srv/www/example.org/logs/path似乎很奇怪。 在标准的Linux下,它将处于如下位置:
tail -f -n 200 /var/log/apache2/error.log
不pipe实际发送日志的位置如何,这将成为服务器上PHP和Apache发生或不发生的关键。