php脚本无法访问/ tmp文件夹

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php脚本无法访问/ tmp文件夹脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我没有open_basedir,PHP可以访问/ etc /usr/PRoc / home等…但不是/ tmp.

@R_197_1262@挂载在/ tmp上(/ tmp类型为tmpfs(rw))
这也是我想使用/ tmp文件夹的原因.

我的文件由http(NginxPHP用户)拥有,并且每个人都可读.

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

脚本宝典总结

以上是脚本宝典为你收集整理的php脚本无法访问/ tmp文件夹全部内容,希望文章能够帮你解决php脚本无法访问/ tmp文件夹所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。