一,php访问/tmp文件夹中文件会报错:
代码:
$filePath = "/tmp/php-temp/keji.jpeg";
$is_ex = file_exists($filePath);
//print_r("is_ex: ".$is_ex);
if ($is_ex){
echo "文件".$filePath."存在"."<br/>";
} else {
echo "文件".$filePath."不存在"."<br/>";
}
报错信息:
文件/tmp/php-temp/keji.jpeg不存在
以上是通过nginx+php-fpm访问,
而相同的代码通过命令行访问则不存在这个问题:
文件/tmp/php-temp/keji.jpeg存在
二,原因:
php-fpm服务是通过systemd管理的,service文件如下:
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/soft/php8.3.9/var/run/php-fpm.pid
ExecStart=/usr/local/soft/php8.3.9/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
PrivateTmp=true表示使得服务拥有独立的临时文件系统,增加服务之间的隔离性,
此时/tmp目录下的文件禁止通过php访问,访问时即使文件存在也会报不存在
把PrivateTmp值改为false后则允许php访问/tmp目录下的文件
标签:tmp,文件,访问,does,报错,ex,php From: https://www.cnblogs.com/architectforest/p/18299245