【发布时间】:2014-01-31 17:44:48
【问题描述】:
在新设置的 digitalOcean 云服务器 (CentOS) 中,我安装了 php 和 Apache。网络服务器运行良好:
[root@a2m5cent01 httpd]# service httpd status
httpd (pid 11232) is running...
[root@a2m5cent01 httpd]# php --version | head -1
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
但是如果我尝试访问任何 php 页面,浏览器会显示空白页面(白页)。
这是我迄今为止为排除故障所做的工作:
- 创建了一个包含以下内容的页面:
<?php phpinfo(); ?>。从浏览器查看时会显示一个空白页面。 - 只是为了确保 apache 指向正确的目录,在那里放置了一个静态的
.html页面,并在浏览器中看到它正常显示,因此 apache 正在工作并且目录是正确的。 - 在
/etc/php.ini中,将display_errors指令更改为On。还是空白页 - 在 Apache 配置文件 (
/etc/httpd/conf/httpd.conf) 中找到此行Include conf.d/*.conf。在conf.d目录中,有一个php.conf文件,其中包含以下行:LoadModule php5_module modules/libphp5.so。确保这个 .so 文件确实存在于这个地方。 - 在同一个文件中,我也有这两行:
AddHandler php5-script .php和AddType text/html .php - 从 CLI 执行 php 页面,它工作正常 - 所以 php 在本地工作。
那为什么它总是在浏览器上显示一个空白页面?我还缺少什么?
编辑 根据@Nathan 的建议,
- 我检查了 Apache 错误日志文件,看不到任何错误 在那里报道。
- 我的
/etc/php.ini说,php error_log 位于syslog。所以我检查了/var/log/messages,但找不到任何PHP错误消息 - 接下来我将一些普通的
HTML放入包含phpinfo()调用的php 文件中。有趣的是,我发现即使是普通的 HTML 文本也不会出现。它仍然产生空白页。 - 然后我检查了 Apache
access日志。惊喜!我试图在浏览器中加载的任何 PHP 文件都没有GET请求。但是对所有 non-php 文件的 GET 请求都存在 200 返回码。
Apache 甚至不记录任何对 PHP 文件的访问请求。知道为什么会这样吗?
【问题讨论】:
-
@Dagon 我以为我在问题的第一段中回答了这个问题。是的。
-
您确认您的 http/php 错误日志显示没有消息吗?也为了踢我会在 phpinfo() 之前和之后添加一些 HTML 以确认页面正在加载但 PHP 没有运行。
-
@Nathan 好点!我已经用详细信息更新了我的问题。显然 Apache 甚至没有为 php 文件注册任何
GET请求...... -
有趣的是请求没有被记录。你还记得你运行了哪些命令和/或你使用了哪些软件包来安装 PHP?或者运行
yum list installed | grep "php" | less来查看安装了哪些 PHP 包可能更容易。 -
php 肯定没有配置 apache。我的 vps 也遇到过这个问题。