apache php 500,apache-php返回500错误但没有错误日志

当PHP应用程序返回500错误但错误日志为空时,可能的原因包括@符号抑制错误、脚本错误定位、错误日志权限问题、配置错误等。建议检查代码中的@符号、通过逐步调试定位问题、启用PHP错误日志显示、检查文件权限和资源限制,如内存使用。此外,从命令行运行PHP文件或检查特定框架的日志文件也可能提供线索。
摘要由CSDN通过智能技术生成

apache-php返回500错误但没有错误日志

我有一个返回内部服务器错误(500)的php应用程序时出现问题,但错误日志中未显示任何内容。

现在,我知道我要运行的内容存在错误,我知道我缺少一些文件,但没有丢失,但是应该在apache错误日志中显示某些内容(否则我应该如何确切知道自己所缺少的内容)。

我创建了一个测试脚本,该脚本在相同的vhost配置下出错,并且这些错误显示得很好,因此一切似乎都已正确配置到php / apache。 是否有某些php错误确实显示在错误日志中(php配置为显示任何类型的通知,警告,错误,致命错误等)?

这是在ubuntu 10.04上使用标准apache和ubuntu repo中带有apt-get的php运行的。

11个解决方案

51 votes

扫描您的源文件以找到@。

从php文档站点

目前,“ @”错误控制运算符前缀甚至会禁用   错误报告将终止脚本的严重错误   执行。 除其他外,这意味着如果您使用“ @”   抑制某个功能的错误,或者它不可用   或输入错误,脚本将在那里死掉而没有   指示原因。

Luc M answered 2020-01-06T06:54:34Z

6 votes

也许某些东西会关闭错误输出。 (我了解您试图说其他脚本正确地将其错误输出到错误日志?)

您可以通过确定脚本退出脚本的位置来开始调试脚本(首先在脚本的第一行中添加echo 1; exit;,然后检查浏览器是否输出1,然后将该行向下移动)。

akirk answered 2020-01-06T06:55:00Z

6 votes

将以下内容复制并粘贴到新的.htaccess文件中,并将其放置在网站的根文件夹中:

php_flag display_errors on

php_flag display_startup_errors on

错误将直接显示在您的页面中。

这是快速调试的最佳方法,但是不要长时间使用,因为这可能会违反安全性。

Meloman answered 2020-01-06T06:55:28Z

5 votes

过去,在两种情况下我没有错误日志:

运行Apache的用户无权修改.htaccess文件。

由于.htaccess的配置错误(例如,错误的重写模块设置)而发生错误500。 在这种情况下,错误将记录到Apache error_log文件中。

sgnsajgon answered 2020-01-06T06:55:57Z

3 votes

对于Symfony项目,请务必检查项目的应用程序/日志中的文件

有关此帖子的更多详细信息:

如何在Symfony 2中调试500错误

顺便说一句,其他框架或CMS共享这种行为。

Balmipour answered 2020-01-06T06:56:30Z

2 votes

这是错误可能不可见的另一个原因:

我遇到过同样的问题。 就我而言,我是从生产环境复制源的。 因此,将在index.php中定义的ENVIRONMENT变量设置为'production'。这导致将error_reporting设置为0(无日志记录)。 只需将其设置为'development',您就应该开始在apache日志中看到错误消息。

原来500是由于数据库配置中缺少半冒号:-)

Aswin Kumar answered 2020-01-06T06:57:00Z

2 votes

发生在我身上的另一种情况是,我对某些页面进行了CURL处理,并出现内部服务器错误,即使启用了所有错误报告,apache日志中也没有任何内容。

我的问题是在我设置的CURL中curl_setopt($CR, CURLOPT_FAILONERROR, true);

然后,该错误并没有向我显示我的错误,尽管发生了错误,但这是因为错误发生在框架级别而不是PHP级别,因此它没有出现在日志中。

eric.itzhak answered 2020-01-06T06:57:29Z

0 votes

您需要启用PHP错误日志。

这是由于当您遇到php错误时,Web服务器中出现一些随机故障,它引发了500个内部错误(我有同样的问题)。

如果查看PHP错误日志,则应该找到解决方案。

在文档中查看如何在php.ini中启用它

Neal answered 2020-01-06T06:58:04Z

0 votes

确保您的文件权限正确。 如果apache没有读取文件的权限,那么它将无法写入日志。

Johnny Ruin answered 2020-01-06T06:58:24Z

0 votes

如果仍然有500错误并且没有日志,则可以尝试从命令行执行:

php -f file.php

它不能完全像在浏览器中一样(从服务器)工作,但是如果代码中存在语法错误,则您将在控制台中看到错误消息。

jcubic answered 2020-01-06T06:58:49Z

0 votes

当我遇到问题时,发生的事情是该站点使用了过多的内存,因此我猜测它无法写入错误日志或显示错误。 为了清楚起见,这是一个Wordpress网站。 升高服务器上的内存限制再次显示了该站点。

John-Henry answered 2020-01-06T06:59:10Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值