【发布时间】:2014-10-30 21:20:58
【问题描述】:
我实现了一个简单的缓存系统,如果数据库说没有可用更新,它会加载静态 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
到目前为止,每个解决方案都假定我知道如何完全操作服务器并使用复杂的术语和推理;这是我第一次使用自己的服务器,有几件事还不清楚。
我曾多次看到它说你应该给用户“没有人”对所述文件夹的写入权限(在全新的 PHP 安装中),而其他人说文件本身需要对目录的某种形式的所有权或Apache 本身需要写权限。
总体而言:没有任何效果,将目录设置为 777 并以另一个用户身份运行操作(我只能假设他在那里也有写访问权限)。
我怎样才能让 PHP 写入 /var/www/html/cache/en/ 和子文件夹?
我正在运行 LAMP,我有 shell 访问权限等等。
【问题讨论】:
-
你可以在任何地方写作吗?你会读...吗?您在搜索此问题时是否浏览过 google 结果的第一页?当你尝试这些事情时发生了什么? (它们太详细了,无法在评论中提出建议)PHP Documentation on fopen 谈论与 safe_mode 和 open_basedir 一起使用时的限制...?
-
查看此链接。我有一个类似的问题,这解决了它。 stackoverflow.com/questions/9133024/www-data-permissions
-
@gloomy.penguin - 是的,我哪儿也写不出来。它可以读取任何内容,但不能写入(您可能需要重新表述:P)。我在这个问题上总结了我努力的成果。
-
@Nicolas 这似乎在一定程度上起作用(正如我发现的那样,PHP 在 www-data 下运行),但不幸的是,它仍然拒绝创建文件的脚本权限。跨度>
标签: php linux apache fopen lamp