【问题标题】:Apache Internal Error 500 on PHP syntax errors (htaccess)PHP 语法错误 (htaccess) 上的 Apache 内部错误 500
【发布时间】:2012-08-07 20:56:56
【问题描述】:

最近在我的服务器上发生了一些变化,这导致每次 PHP 中出现语法或逻辑错误时都会抛出 internal error 500。这些错误在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 错误的东西?

【问题讨论】:

  • 您是否检查了错误日志中的错误来源?
  • 出现语法错误或无效对象实例时会发生这种情况。我确切地知道它发生的原因,但我想避免显示内部错误页面。我试图用我的 apache2 文件重定向,但它不起作用

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


【解决方案1】:

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

为了抑制所有错误发送到客户端,在 php.ini 文件集中

display_errors = 关闭

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

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

【讨论】:

  • 这正是我正在寻找的,我该怎么做? (我只是想完全避免 500 错误)还有一个额外的问题:我如何能够在遇到这种情况时发送电子邮件?
  • 我已经将它设置为display_errors = Off,还有其他想法吗?
  • 好吧,首先,如果您的 .htaccess 文件中有错误,那么您无法阻止 500 被抛出并在视觉上显示。我要检查的第二件事是查看您是否正在使用框架、库或有一个文件手动打开 php.ini 上的 display_error 指令。你可以在任何地方通过ini_set('display_errors', '1');
  • 这会向用户显示错误。我在 try catch 块中处理它们,但似乎在创建 class instance 时会引发 500 错误跨度>
  • @mlishn 除非我弄错了,加载类文件时您无法捕获解析错误。
猜你喜欢
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2011-10-04
  • 2018-06-04
  • 2016-09-22
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多