PHP-FPM不会在日志上写入

时间:2011-05-02 21:04:21

标签: php

我有这个php-fpm.conf

[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/example.com/log/php-error.log为空,我造成了一些错误,如10/0(零分割)等等,我看到错误为输出但是php-error.log仍然是空的。

我chrooted我的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 

3 个答案:

答案 0 :(得分:3)

来自Debian的文档:

  

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

     

Debian PHP已修补使用系统范围的时区数据库   从tzdata包中,确保自动更新   由PHP使用。

     

请注意,这要求PHP进程可以访问/ etc / localtime   和/ usr / share / zoneinfo。对于任何常规安装,这应该是   案例,但在特定的安全环境中阅读时区   数据库是不可能PHP将给出“时区数据库已损坏 -   这应该从不发生!“错误。

所以你需要将/ etc / localtime文件和/ usr / share / zoneinfo目录复制到你的chroot目录。

答案 1 :(得分:1)

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

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

因为你是chrooting,你需要指定'chroot relative path':

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

这是因为php-fpm worker /home/vhosts/example.com/真的是/由于chrooting。

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

答案 2 :(得分:0)

我目前遇到的问题可能与listen.backlog设置有关。 我一直在寻找不同的帖子声称-1可以被错误地解释。我目前正在尝试将listen.backlog设置为0或高值。我会看到结果是什么并让你发布。

您是否尝试按如下方式更正日志路径? log / php-error.log(前导斜杠使它查找通常在Linux系统上不存在的/ log文件夹。

亲切的问候