php-fpm开启chroot的一些注意事项
zsx2016/11/15 in 代码笔记 / 0 / 810

1. xxx.conf内的

chdir = /www

不能指定为使用ln -s软链接的目录,必须实际存在。否则,可能会在日志报错:php exited with error code 70.


2. 若多个网站都使用了chroot,有可能出现混乱问题。即: 本应该访问网站1,结果执行的是网站2的index.php。

参见https://bugs.php.net/bug.php?id=67141&edit=1:Bug #67141  PHP FPM vhost pollution    


什么缘故呢?opcache的锅。当两个网站的路径“看起来”是一样的时候(举例:chroot网站A为/data/www/a,网站B为/data/www/b,ab俩文件夹下分别有www/index.php文件。通过chroot,两个站都认为它们访问的路径都是/www/index.php),opcache就有可能用前一个网站的缓存来返回结果。

怎么解决?php.ini,修改

opcache.revalidate_freq=0

即可


3. 解决DNS和时区问题需要拷贝的文件(Ubuntu 16.04 x64):

sudo cp /etc/resolv.conf /etc/hosts /etc/nsswitch.conf ${data}/etc
sudo cp /lib/x86_64-linux-gnu/{libc.so.6,libdl.so.2,libnss_dns.so.2,libnss_files.so.2,libresolv.so.2}  ${data}/lib/
sudo cp -R /usr/share/zoneinfo ${data}/usr/share


如果本文对你有帮助,你可以用支付宝支持一下:

Alipay QrCode