在 PHP 中,我收到了这个:Warning: fopen(/tmp/mydir/file.txt): failed to open stream: No such file or directory调用时fopen ('/tmp/mydir/file.txt', "r");
然而:
cd /tmp
ls -l .
drwxrwxr-x 2 user 4.0K Aug 19 14:09 mydir
ls -l mydir
-rw-rw-r-- 1 user 41K Aug 19 14:09 file.txt
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,print_r(scandir('/tmp/'));我会得到一个空数组。做print_r(scandir('/tmp/mydir/'));我得到failed to open dir: No such file or directory。但是,这样做会print_r(scandir('/home/user/'));返回failed to open dir: Permission denied。出于某种原因,目录中/tmp没有显示这样的文件或目录,即使它们存在。这也不是权限问题,如果是,它会(应该)产生权限错误。
我在这里缺少什么?或者这是一个已知的错误?
这可能是功能问题PrivateTmp:它将 /tmp 和 /var/tmp 挂载为仅对该进程可见,因此每个进程都会看到不同的虚拟 /tmp 文件夹。
如果你想改变它,你可以/etc/systemd/system/php-fpm.service.d/private-tmp.conf用内容创建:
[Service] PrivateTmp=false
Run Code Online (Sandbox Code Playgroud)