PHP: fopen的结果是 "Permission Denied" - 给予PHP写入权限?

0 人关注

我已经实现了一个简单的缓存系统,如果数据库说没有更新,就加载一个静态的HTML,而当数据库说有更新时,就重新生成/写入文件。

初步测试表明,这是可行的,然而,实际写入文件的操作并没有。

Warning: fopen(/var/www/html/cache/en/item_4.php):
failed to open stream: Permission denied

试图写入上述文件的php脚本位于/var/www/html/src/p/view_item.php

到目前为止,每个解决方案都假定我知道如何完全操作服务器,并使用复杂的术语和推理;这是我第一次使用自己的服务器,有几件事还不清楚。

我在多个场合看到过,应该给用户 "nobody "写权限到上述文件夹(在一个新的PHP安装中),而其他人说文件本身需要对该目录有某种形式的所有权,或者Apache本身需要写权限。

总的来说。没有任何效果,包括将目录设置为777,并以另一个用户(我只能假设他也有写权限)的身份运行操作。

究竟怎样才能让PHP写到/var/www/html/cache/en/和子文件夹?

我在运行LAMP,我有shell权限和所有这些。

4 个评论
你能在任何地方写作吗? 你能阅读吗?当你搜索这个问题时,你有没有浏览过谷歌的第一页结果? 当你尝试这些事情时,发生了什么? (它们太详细了,无法在评论中提出) 关于fopen的PHP文档 谈到了与safe_mode和open_basedir一起使用时的限制...?
请看这个链接。我有一个类似的问题,这解决了它。 stackoverflow.com/questions/9133024/www-data-permissions
@gloomy.penguin - 是的,我不能在任何地方写。它可以读任何东西,只是不能写(你可能要重新措辞:P)。我在问题中有点总结了我的努力成果。
@Nicolas 这似乎在一定程度上起了作用(正如我所发现的,PHP在www-data下运行),但不幸的是,它还是拒绝了脚本创建文件的权限。
php
linux
apache
fopen
lamp
Super Cat
Super Cat
发布于 2014-09-06
1 个回答
Jan
Jan
发布于 2014-09-07
已采纳
0 人赞同

到底怎样才能让PHP写到/var/www/html/cache/en/和子文件夹里呢?