关于PHP语法错误的Apache内部错误500(htaccess)
问题描述:
最近在我的服务器上发生了一些变化,每次在PHP中出现语法或逻辑错误时,都会引发internal error 500
。这些错误在exception class
处理,我不希望他们抛出500
错误。关于PHP语法错误的Apache内部错误500(htaccess)
忘了提:当页面犯规存在=> 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错误?
答
语法错误无法被PHP捕获。如果一个文件不能被解析,你会得到一个不可避免的500错误。您可以将您的php.ini设置为不在客户端上显示错误,但它仍会记录错误。
要禁止所有错误被发送到客户端,在php.ini文件中设置
的display_errors =关闭
当遇到一个500错误他们就会看到一个白色的空白屏幕。
当发生这种情况时,无法通过电子邮件向您发送电子邮件,而不是通过某些脚本监控您的apache和php错误日志。您可以通过在您的htaccess文件中配置error.php文件来显示500错误,但我不知道。如果可以的话,你可以将一些基本的PHP电子邮件代码放入该代码中,但它可能是通用的 - 它无法分辨实际的错误。
您是否检查了错误来源的错误日志? – 2012-08-08 02:58:14
发生语法错误或无效对象实例时发生。我确切地知道它为什么会发生,但我想避免显示内部错误页面。我试图重定向我的apache2文件,但它不能正常工作 – mlishn 2012-08-08 03:47:58