我有这个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
答案 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文件夹。
亲切的问候