【问题标题】:PHP Nginx error_log getting truncatedPHP Nginx error_log 被截断
【发布时间】:2013-09-29 23:43:25
【问题描述】:

我正在运行 nginx 和 PHP 5.5,当传递的字符串很长时,我所有的 error_log 消息都会被截断。

我已经更新了我的 php.ini 文件并将日志最大长度从 1024 增加到 0(没有最大值),它仍在发生。

【问题讨论】:

  • 字符串是如何被截断的,在哪个位置?你能举个例子吗?
  • 你是否重启了你的php进程(可能是http服务器或者fcgi容器)?只有这样更改的php.ini 文件才会重新加载。
  • 我已经重新启动它 php-fpm 并查看调用 phpinfo() 添加的更改,问题仍然存在。
  • 你在哪里告诉 php 发送错误?

标签: php logging nginx


【解决方案1】:

如果你想要超过 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 上的。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2012-07-24
    • 2012-09-22
    • 2023-03-24
    • 1970-01-01
    • 2010-09-14
    • 2012-02-04
    • 2023-03-23
    相关资源
    最近更新 更多