在 Docker 容器中使用 NGINX 和 PHP-FPM,PHP 错误日志在开头包含多个 \x{00}

在 Docker 容器中使用 NGINX 和 PHP-FPM,PHP 错误日志在开头包含多个 \x{00}

这确实是一种令人讨厌的行为。我有一个 Docker 容器,其中包括:

NGINX、PHP-FPM 和一些其他工具,我将其用作 PHP Web 应用程序(包括 Laravel 应用程序)的 Web 服务器,以及一些其他工具。非 Laravel 应用程序将 PHP 通知、警告、错误记录到日志文件中。它“正在运行”,但在日志文件中,首次创建时填充了大量空字节 ? (\x{00})(3089725 个字符)。

在 NGINX .conf 中我有:

access_log /nginx-home/logs/RIS-access.log;
error_log  /nginx-home/logs/RIS-error.log info;

在其他脚本中我使用以下命令记录到不同的 .log 文件中:

ini_set("error_log", realpath(dirname(__FILE__).'/../../') . "/php-error.log");

日志文件正在运行,但开头的填充会给日志文件添加大约 4 MB 的数据。

我必须深入研究我的 docker 容器中的 NGINX 和 php-fpm 的其他设置,但我主要使用默认设置,并对 php.ini 文件进行了一些调整以用于大文件上传。我想我在 docker 中使用 php-fpm.conf 中的默认值。

日志文件看起来像这样:

用空字节填充,后跟日志条目:

[02-May-2021 08:42:10 America/Cayman] {
    "Called By:": "Controller.php",
    "Value:": "Action:  search_orthanc"
}
[02-May-2021 08:42:10 America/Cayman] {
    "Called By:": "DatabaseFactory.php",
    "Value:": {
        "Query:": "SELECT * from orthanc_hosts WHERE id = ?",
        "Params:": [
            "1"
        ]
    }
}

除此之外,它们工作正常。日志记录主要用于开发和调试,但我就是想知道为什么它们要这样填充以及如何避免这种情况。

此外,空字节全部写入日志文件的一行中。

谢谢。

相关内容