php脚本无法访问/ tmp文件夹
我没有open_basedir,php可以访问/ etc /usr/proc / home等…但不是/ tmp.
tmpfs挂载在/ tmp上(/ tmp类型为tmpfs(rw)) 我的文件由http(nginx和php的用户)拥有,并且每个人都可读. sudo -u http cat / tmp / file正在运行但是php脚本中的任何内容都没有(比如file_exist()或file()). 编辑:日志中的错误显示: PHP Warning: file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267 edit2:我用另一种方式测试了这个问题.我做了 touch("/tmp/boo"); file_exist("/tmp/boo"); 和file_exist返回true,以便创建文件.然后我在里面看了/ tmp,那里找不到“boo”文件.这就是我所害怕的,php不会“看到”挂载点.为什么这样,我该如何解决?
我发现了为什么,有人给了我全球的暗示.
这既不是php或tmpfs的错.罪魁祸首是systemd和他的安全系统PrivateTmp. 对于那些遇到同样问题的人来说,服务php(可能还有其他一些)在systemd脚本(/usr/lib / systemd / system)中将PrivateTmp选项设置为true. 在这种情况下,创建一个新的/ tmp并与另一个隔离.一旦服务停止,将删除保存在内的所有数据. 这是一个安全措施,因为/ tmp可以包含很多敏感信息,并且php脚本并不总是安全的. 要停用此功能,只需将脚本复制到/ etc / systemd / system中(以避免在更新后覆盖您的更改)并将PrivateTmp设置为false. 您还可以使用JoinsNamespaceOf设置两个或多个服务以共享相同的/ tmp. 有关更多信息,请访问: man systemd.exec (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |