我使用nginx 1.4.1和php 5.4.17与FPM。
我有一个简单的应用程序正常运行,直到我包含一个具有以下内容的文件:
class Config {
const HELLO = array('WORLD');
}
当我使用php-cgi oder php在我的命令行上执行它时,我的PHP不会给我这个文件的任何错误。但是在线解析器告诉我类中不允许使用const的数组。 但是为什么nginx和php没有返回此错误?
这个应用程序的php-fpm池在unix套接字上运行,访问任何其他php文件或html文件工作正常。 catch_worker_output = yes已设置且display_errors设置为STDERR,因此nginx正在获取错误,因此我只需要查看nginx编写的错误日志文件。 我的访问日志为我提供HTTP状态200。
但我仍然得到一个空白页面,根本没有输出,nginx错误日志或php错误日志中没有错误,即使我的命令行工具在我测试该php文件时也不会给我错误。
我已将SCRIPT_FILE设置为我的位置块中的$ document_root& fast_cgi_script,用于服务器块的.php文件。
如果我把一些不存在的函数名称如“idonotexist(true);”然后我在浏览器上收到一个致命错误,告诉我该功能不存在。那么这里的问题是什么?
UPDATE :在我的服务器上运行此命令在控制台上没有返回任何内容,因此php代码没问题:
php -r "class Config { const HELLO = array('WORLD'); }"
但是在我的其他服务器上运行这个基于php-module的简单的apx apache我得到了这个:
PHP Fatal error: Arrays are not allowed in class constants in Command line code on line 1
Fatal error: Arrays are not allowed in class constants in Command line code on line 1
所以我的nginx / php-fpm配置出了问题
UDATE 2 :我设法让命令行版本正常工作,将其添加到php.ini
error_reporting = 2147483647
而不是
error_reporting = 999999
但仍然通过nginx / php-fpm我得到一个空白页面。 我现在只是创建了一个test.php,只有那个Config类定义带有错误的const用法。命令行现在可以通过nginx / php-fpm打印正确的致命错误但没有任何内容。