PHP-FPM不写日志

yfjy0ee7  于 2023-04-28  发布在  PHP
关注(0)|答案(4)|浏览(205)

我有这个php-fpm。会议

[example.com]
        listen                 = 127.0.0.1:9001
        listen.owner           = example.com
        listen.group           = example.com
        listen.mode            = 0660
        listen.backlog         = -1

        user  = example.com
        group = example.com

        pm                   = dynamic
        pm.max_requests      = 0
        pm.max_children      = 2
        pm.start_servers     = 1
        pm.min_spare_servers = 1
        pm.max_spare_servers = 1

        chroot = /home/vhosts/example.com/

        request_terminate_timeout = 2
        request_slowlog_timeout   = 1
        slowlog                   = /home/vhosts/example.com/log/php-slow.log

        catch_workers_output = yes

        env[HOSTNAME] = $HOSTNAME
        env[PATH] = /usr/local/bin:/usr/bin:/bin
        env[TMP] = /tmp
        env[TMPDIR] = /tmp
        env[TEMP] = /tmp

        php_flag[display_errors]            = on
        php_admin_value[session.save_path]  = /tmp
        php_admin_value[error_log]          = /home/vhosts/example.com/log/php-error.log
        php_admin_flag[log_errors]          = on
        php_admin_value[memory_limit]       = 100M
        php_value[max_execution_time]       = 20

我不明白为什么/home/vhosts/ www.example.com 。日志仍然为空。
我chroot我的vhost,但如果我改变
/home/vhosts/example.com/log/php-error.log

/log/php-error.log
我得到一个非常奇怪的错误,当我做“10 / 0”!

Fatal error: main(): Timezone database is corrupt - this should *never* happen! in /web/index.php on line 10
kb5ga3dv

kb5ga3dv1#

Debian的文档:

来自系统时区数据库的时区数据

Debian PHP已经打了补丁,可以使用tzdata包中的系统范围的时区数据库,确保PHP也会自动使用任何更新。
请注意,这要求PHP进程能够访问/etc/localtime和/usr/share/zoneinfo。对于任何常规安装都应该是这种情况,但在特定的安全环境中,当阅读时区数据库是不可能的时,PHP将给予“时区数据库已损坏-这应该 * 永远不会 * 发生!”错误。
所以你需要复制/etc/localtime文件和/usr/share/zoneinfo目录到你的chroot目录。

knpiaxh1

knpiaxh12#

您看不到日志条目,因为您指定的日志路径是“真实的路径”:

php_admin_value[error_log]          = /home/vhosts/example.com/log/php-error.log

因为要chroot,所以需要指定'chroot相对路径':

php_admin_value[error_log]          = /log/php-error.log

这是因为对于php-fpm worker /home/vhosts/ www.example.com 是真的/由于chroot。
我还没有测试过它,但我怀疑你的会话路径也可能受此影响,所以你需要确保“chroot/tmp”存在(实际上是/home/vhosts/example。com/tmp),并且可由您用于该php-fpm池的用户写入。

r7xajy2e

r7xajy2e3#

我目前有类似的问题,可能与听。backlog设置。我一直在发现不同的帖子声称-1可能被错误地解释。我目前正在尝试设置听。backlog为0或更高的值。我会看看结果如何,然后随时通知你。
您是否尝试按如下方式更正日志路径?log/php-error.log(前导斜杠使它查找/log文件夹,该文件夹通常在Linux系统上不存在。
亲切的问候

zpf6vheq

zpf6vheq4#

如果SELinux处于活动状态,请确保授予写入日志的权限。示例:

sudo chcon -R -t httpd_sys_rw_content_t /var/opt/remi/php73/log/php-fpm/

相关问题