文件存在于/ tmp中,但PHP在CentOS上返回“No such file or directory”

时间:2015-08-19 19:08:57

标签: php centos

在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

如果我尝试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中的目录显示没有这样的文件或目录,即使它们存在。它也不是权限问题,如果是,它会(应该)产生权限错误。

我在这里缺少什么?或者这是一个已知的错误?

1 个答案:

答案 0 :(得分:3)

这可能是PrivateTmp功能的问题:它将/ tmp和/ var / tmp挂载为仅对该进程可见,因此每个进程都会看到不同的virtual / tmp文件夹。

如果您想更改它,可以使用内容

创建/etc/systemd/system/php-fpm.service.d/private-tmp.conf
[Service] PrivateTmp=false

修复的来源:Content of /tmp is not visible from PHP-FPM