最近我的服务器上发生了一些变化,每次在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错误的内容?
答案 0 :(得分:1)
PHP无法捕获语法错误。如果无法解析文件,您将收到不可避免的500错误。您可以将php.ini设置为不在客户端上显示错误,但仍会记录错误。
要在php.ini文件集中禁止发送到客户端的所有错误
display_errors = Off
遇到500错误时,他们只会看到一个白色的空白屏幕。
当发生这种情况时,没有办法通过电子邮件发送给你,而不是让一些脚本监视你的apache一个php错误日志。您可以通过在htaccess文件中配置它来设置error.php文件以显示500错误,但我不知道。如果可以,你可以将一些基本的php电子邮件代码放入其中,但它是通用的 - 它无法分辨实际错误。