3

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

忘了提:当页面不存在=> 404错误工作得很好

我目前有严格的错误报告。我想这可能是我的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 错误的东西?

4

1 回答 1

1

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

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

display_errors = 关闭

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

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

于 2012-08-07T21:04:33.990 回答