![Apache2+PHP fopen() 权限](https://linux22.com/image/798738/Apache2%2BPHP%20fopen()%20%E6%9D%83%E9%99%90.png)
介绍:
很抱歉,互联网上有大量此类帮助,但我对 Linux 不太了解,所以才寻求帮助。
问题:
我已经在 debian 下安装了 apache2 和 PHP5,并且使用 PHP fopen() 函数产生了典型的结果:
警告:fopen(/some/where/some.txt):无法打开流:/some/file/location/of/script/index.php 的某行中权限被拒绝
希望得到的答复:
如果有人能为我提供一个安全/最低要求的解决方案以使其发挥作用,我将不胜感激,如果也能解释这一点就更好了。
弱假设:
某些文件夹或配置极有可能需要设置正确的权限,但是当谈到这一点时,我却陷入了黑暗森林。
笔记:
- Apache 是从源代码编译并安装的。PHP 是从源代码编译并安装的。
- 从源代码安装,没有默认的 php.ini
- 以上应该考虑我不熟悉 Linux 并且没有获得权限。
答案1
这可能与你的 Apache/PHP 设置无关,无论你提供了什么无信息关于这些是如何配置的。最有可能的是,运行 PHP 脚本的用户没有打开文件的权限。如果不知道它是如何配置的,我就无法告诉你如何获取这些信息(ps auxwww | grep php
可能显示用户)。您也没有告诉我们文件的权限/所有权是什么(这chmod a+wr filename.txt
使得任何用户都可以读取/写入文件 - 但这严重损害了安全性)。
如何使您的文件可访问且安全取决于您的安全策略,但如果对机器/它的用途或其配置方式一无所知,即使有您的安全策略,这也会变得不可能。
进一步的考虑是,将数据存储在平面文件中,通过 PHP 直接访问几乎总是非常坏主意。它无法扩展,并且可能导致死锁和竞争条件。