我有一个在Debian 7 + PHP 5.6上运行良好的网站,最近决定将我的Debian安装升级到Debian 8.一切都很顺利,除了一件小事。
在运行相同的代码时,似乎PHP无法向/tmp/写任何东西,现在我得到如下消息:
errno: 2, errstr: "ZipArchive::extractTo(): Permission denied", errcontext: { Filepath: "/tmp/phpVTUxDh", Options: null, Zip: { status: 0, statusSys: 0, numFiles: 12, filename: "/tmp/phpVTUxDh", comment: "" }, Status: true
很明显,方法extractTo()是很难写入\tmp是否有任何具体的更改可能导致此? 那么新系统的PrivateTmp呢?
我试图添加PrivateTmp=false到文件:
/etc/systemd/system/multi-user.target.wants/lighttpd.service /etc/systemd/system/multi-user.target.wants/php5-fpm.service
但是,这似乎没有任何区别。
无论如何, \tmp现在总是空的任何具体原因? 另外,tmp的新位置在哪里?
谢谢。
有些事情要检查:
1)你运行php-fpm系统用户
2)AppArmor:
cat /sys/module/apparmor/parameters/enabled
如果启用:
grep 'DENIED' /var/log/syslog or /var/log/auditd/auditd.log
3) /tmp上的权限:
stat /tmp
4)在PHP设置中的open_basedir :
su -m <php_user> -c "php -i | grep -i open_basedir"
另外,当你修改systemd单元文件时,先尝试重新加载它: systemctl daemon-reload ,然后重新启动php-fpm 。