对 Lighttpd Chrooted RedHat PHP 版本 5.1.6-20.el5_2.1 进行故障排除
RHEL / CentOS Linux v5.2 下最新的 php 版本 5.1.6-20.el5_2.1 似乎做了一些重大更改。因此,使用之前的说明进行的 choort jail 设置不再有效。
PHP 因分段错误而崩溃。因此我不得不使用strace 命令跟踪 php 错误。花了几个小时后,我找到了以下错误的解决方案:
Sep 15 03:26:59 lightyproxy kernel: php-cgi[19106]: segfault at 0000003151c1b4b8 rip 0000003151e98477 rsp 00007fff9ecdde20 error 6 Sep 15 03:26:59 lightyproxy kernel: php-cgi[19107]: segfault at 0000003151c1b4b8 rip 0000003151e98477 rsp 00007fff9ecdde20 error 6 Sep 15 03:26:59 lightyproxy kernel: php-cgi[19108]: segfault at 0000003151c1b4b8 rip 0000003151e98477 rsp 00007fff9ecdde20 error 6 Sep 15 03:26:59 lightyproxy kernel: php-cgi[19110]: segfault at 0000003151c1b4b8 rip 0000003151e98477 rsp 00007fff9ecdde20 error 6
您需要将整个 /etc/ 和 /usr/share/zoneinfo/ 复制到 jail。如果您的 jail 位于 /jail 目录,请输入以下命令:
复制回原始自定义文件,例如 passwd、group、php.ini:
现在复制 /usr/share/zoneinfo/:
将所有最新的 php-cgi 和所有扩展复制到 $D
复制 php 模块(对于 64 位,使用 $D/usr/lib64):
启动 lighttpd:
这应该可以修复所有错误。查看 /var/log/messages 中的 php 错误:
# service lighttpd stop
# D=/path/to/chroot/jail
# mkdir /root/jail.etc
# /bin/cp -avr $D/etc/* /root/jail.etc
# /bin/cp -avr /etc/* $D/etc/
# cp -avr /root/jail.etc/* $D/etc/
# cd $D/usr/share
# cp -avr /usr/share/zoneinfo/ .
# cd $D/usr/bin
# cp /usr/bin/php-cgi .
# l2chroot php-cgi
# cd $D/usr/lib/
# cp -avr /usr/lib/php/ .
# cd php/modules
# for l in *.so; do l2chroot $l; done
# service lighttpd start
# tail -f /var/log/messages