我最近遇到了 Apache 和 PHP 尝试写入 /tmp 的问题,但指出脚本失败并出现错误“没有这样的文件或目录”
Centos 7 使用 systemd,它有一个很棒的功能 (PrivateTmp) 可以中断 Apache/PHP 对 /tmp 文件夹的访问(特别是在文件需要共享给其他进程的情况下/其他人看到。此功能通过为每个进程创建一种“虚拟” /tmp 目录来工作,因此 Apache 看到的文件不会被 PHP 看到,等等。
首先,使用以下命令将 httpd.service 和 php-fpm.service 文件从 /usr/lib/systemd/system/ 复制到 /etc/systemd/system。
cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/. && cp /usr/lib/systemd/system/php-fpm.service /etc/systemd/system/.
将它们复制到位后,在新位置编辑文件的每个副本,并使用 vi 或您首选的文本编辑器将 PrivateTmp=true 的行更改为 PrivateTmp=false。
vi /etc/systemd/system/httpd.service
vi /etc/systemd/system/php-fpm.service
完成这些更改后,您需要重新启动 systemd,以及 php-fpm 和 apache。
重新启动 systemd:
sudo systemctl daemon-reload
重启apache:
sudo systemctl restart httpd
重启php-fpm:
sudo systemctl restart php-fpm