我有一个 Apach Http Server,它的一个虚拟主机开始出现故障,并出现 500 错误。我直接查看日志,触发问题,结果是访问日志中有正常条目,错误日志中没有提及。
这是运行 PHP 所以我运行
php index.php
在应用程序的目录中,它运行良好。这不是 PHP 问题,或者说不太可能。
我将 LogLevel 设置为调试,在错误日志中看到的内容如下:
[Sat Jul 04 08:41:10 2009] [error] [client 84.72.21.12] File does not exist: /var/www/example.com/public/favicon.ico, referer: http://example.com/
并在访问日志中:
84.72.21.12 - - [04/Jul/2009:08:40:29 -0400] "GET / HTTP/1.1" 500 - "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0.1 Safari/530.18"
84.72.21.12 - - [04/Jul/2009:08:40:29 -0400] "GET /favicon.ico HTTP/1.1" 404 361 "http://example.com/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0.1 Safari/530.18"
还有什么想法可以尝试吗?
答案1
这是一个 PHP 错误。启用 PHP 错误显示后,我才发现这个错误,而我在手动运行脚本时没有看到这个错误,是因为我以 root 身份运行脚本,错误是缺少在目录中写入临时数据的权限。
答案2
确保文件夹路径中没有 .htaccess 文件,直到 php 文件为止。如果路径是 /var/www/html/a/b/test.php,则确保 /var/www/html、/var/www/html/a 和 /var/www/html/a/b 文件夹中没有 .htacces 文件。如果有 .htaccess 文件,则将其重命名为其他名称,然后重试。
大多数情况下,由于 .htaccess 文件损坏,我会收到 500 错误,但此后在简单的“ls”上不会显示,很难理解它们是问题的根源。
答案3
您是通过 libapache2-mod-php (mod_php) 还是通过 FastCGI 之类的东西调用 PHP?请告诉我们您安装的版本、发行版,检查文件/目录权限并尝试;
tail -f /var/log/apache2/access.log /var/log/apache2/error.log
或者,如果您的日志位于不同的位置,请进行修改。然后尝试使用浏览器访问该网站,将“test.php”与以下内容放在一起,您会得到什么:
<?php
phpinfo();
?>
它能正确显示页面吗?