PHP Nginx error_log被截断

4
我正在运行nginx和PHP 5.5,当传递的字符串较长时,所有error_log消息都会被截断。
我已更新我的php.ini文件,并将日志最大长度从1024增加到0(无最大限制),但问题仍然存在。

字符串是在哪个位置被截断的?你能举个例子吗? - Pekka
你是否重启了你的PHP进程(可能是HTTP服务器或FCGI容器)?只有这样,更改后的php.ini文件才会重新加载。 - arkascha
我已经重启了php-fpm,并通过调用phpinfo()查看添加的更改,但问题仍然存在。 - vutran
你在告诉 PHP 把错误信息发送到哪里? - Patrick James McDougle
2个回答

7
如果您想要记录超过2048字节的日志行,您需要重新编译Nginx。从http://wiki.nginx.org/HttpLuaModule了解到:

Nginx核心中的错误消息存在硬编码长度限制。最多为2048字节,包括尾随换行符和前导时间戳。您可以通过修改Nginx源树中src/core/ngx_log.h文件中的NGX_MAX_ERROR_STR宏定义来手动修改此限制。如果消息大小超过此限制,Nginx核心将自动截断消息文本。


抱歉,我忘了提到nginx和php-fpm是通过homebrew在Mac OS X上安装的。 - vutran

2

php-fpm中的1024字符限制是硬编码的,您需要重新编译它。

如果您想超过2048个字符,您还需要重新编译nginx。

这里有一个完整的解决方案,包括8192个字符的补丁: https://forums.freebsd.org/threads/56543/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接