关于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错误?

+0

您是否检查了错误来源的错误日志? – 2012-08-08 02:58:14

+0

发生语法错误或无效对象实例时发生。我确切地知道它为什么会发生,但我想避免显示内部错误页面。我试图重定向我的apache2文件,但它不能正常工作 – mlishn 2012-08-08 03:47:58

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

要禁止所有错误被发送到客户端,在php.ini文件中设置

的display_errors =关闭

当遇到一个500错误他们就会看到一个白色的空白屏幕。

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

+0

我在找什么,我该怎么做? (我只是想完全避免500错误)另外还有一个问题:如何才能在这种遭遇中发送电子邮件? – mlishn 2012-08-07 21:11:34

+0

@mlishn查看我的上述回答 – Ray 2012-08-08 02:48:34

+0

我已经将它设置为'display_errors = Off',还有其他想法吗? – mlishn 2012-08-08 03:46:33