关于PHP语法错误的Apache内部错误500(htaccess)

时间:2012-08-07 20:56:57

标签: php apache .htaccess internal-server-error

最近我的服务器上发生了一些变化,每次在PHP中出现语法或逻辑错误时都会导致internal error 500被抛出。这些错误是exception class中的处理,我不希望它们抛出500错误。

忘记提及:当页面不存在时=> 404错误正常工作

我目前有error_reporting到严格。 我想它可能是我的apache config file

 <Directory /var/www/public/>
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{QUERY_STRING} (.*)(http|https|ftp):\/\/(.*)
    #RewriteRule ^(.+)$ - [env=rfi:true]
    #RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domain\.com$ RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
    </IfModule>
    #CustomLog /path/to/logs/rfi.log combined env=rfi
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    ErrorDocument 404 http://www.domain.com/404.php
    #ErrorDocument 403 http://www.domain.com/403.php
    ErrorDocument 500 http://www.domain.com/500.php
 </Directory>
 <Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log

有没有人看到任何可能导致500错误的内容?

1 个答案:

答案 0 :(得分:1)

PHP无法捕获语法错误。如果无法解析文件,您将收到不可避免的500错误。您可以将php.ini设置为不在客户端上显示错误,但仍会记录错误。

要在php.ini文件集中禁止发送到客户端的所有错误

display_errors = Off

遇到500错误时,他们只会看到一个白色的空白屏幕。

当发生这种情况时,没有办法通过电子邮件发送给你,而不是让一些脚本监视你的apache一个php错误日志。您可以通过在htaccess文件中配置它来设置error.php文件以显示500错误,但我不知道。如果可以,你可以将一些基本的php电子邮件代码放入其中,但它是通用的 - 它无法分辨实际错误。