插件中的错误导致500服务器错误,屏幕或日志中没有错误消息

时间:2016-06-02 10:00:41

标签: php wordpress nginx

我在WordPress插件中生成的错误存在问题,这使我的开发变得困难。

如果我在普通的PHP文件中触发错误,如下所示:

trigger_error("an error occurred", E_USER_ERROR);

它工作正常,我将得到页面上显示的错误。但是,如果我在插件的代码中尝试相同的操作,则服务器会在浏览器中生成500错误,并且不会显示错误。

此外,它还不会在插件代码中记录PHP-FPM或Nginx日志文件中的任何错误。这使得开发非常困难,因为当我收到错误时,我没有任何信息可以继续。

由于这在独立PHP中运行良好,我假设它必须与WordPress相关。

我在wordpress中启用了调试功能。我的堆栈如下:

  • Ubuntu 16.04
  • PHP 7.0.4
  • Nginx 1.10.0
  • MariaDB 10.0.24

文件所有权为user:www-data。目录是775,文件是664

PHP conf文件中启用了错误,我可以看到独立PHP页面的错误,在WordPress插件PHP页面发生错误的情况下,它正好发生在服务器上。

这令人非常沮丧,因为我无法理解为什么会这样。有没有人能够帮助我解决这个问题?

修改

这里要更清楚的是我在wp-config中启用调试的功能:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );

其他调试值默认为true,因此这应该是我所需要的。

奇怪的是我刚刚注意到error_log()在WordPress文件中没有做任何事情,而trigger_error()会导致500错误。

这感觉就像某种基于许可的错误,但我不确定是什么。我真的需要一些帮助,因为在没有任何错误文本的情况下,在这种情况下开发实际上是不可能的。

2 个答案:

答案 0 :(得分:0)

Wordpress默认禁用错误报告。您可以通过在wp-config.php中将WP_DEBUG常量设置为true来启用wordpress调试模式。

在这里您可以找到更多详细说明: https://codex.wordpress.org/Debugging_in_WordPress

答案 1 :(得分:0)

问题是由插件" Wordpress CSV导入器"引起的。我不知道为什么,但删除它使调试再次工作。