阿帕奇&x2B;unix上的PHP写入权限

阿帕奇&x2B;unix上的PHP写入权限,php,apache,file-permissions,Php,Apache,File Permissions,我正试图在fedora上用apache启动PHP站点,但我在写权限方面遇到了问题。看起来apache没有对某些文件夹的写入权限,但我不明白为什么 我已经检查了httpd.conf,它的组是:apache,用户是:apache。 然后我提出: chown-R apache:ApacheWWW,并设置了777个文件夹权限,但仍显示: 警告:文件放置内容(/var/www/public/temp.txt)[function.file put contents]:无法打开流:第8行/var/www/pu

我正试图在fedora上用apache启动PHP站点,但我在写权限方面遇到了问题。看起来apache没有对某些文件夹的写入权限,但我不明白为什么

我已经检查了httpd.conf,它的组是:apache,用户是:apache。 然后我提出: chown-R apache:ApacheWWW,并设置了777个文件夹权限,但仍显示:

警告:文件放置内容(/var/www/public/temp.txt)[function.file put contents]:无法打开流:第8行/var/www/public/newtest.php中的权限被拒绝

请给我一些建议

更新:
顺便说一句,如果我从命令行生成“php newtest.php”,那么temp.txt文件将使用组根和用户根创建。它在浏览器中无法工作。

将chmod 775转换为newtest.php;)

ls-la/var/www/public


请检查:-)

我建议将apache切换为mod_itk作为mpm,并使用所有者文档根目录的权限运行特定vhost,并包含php脚本

警告:文件放置内容(/var/www/public/temp.txt)[function.file put contents]:无法打开流:第8行/var/www/public/newtest.php中的权限被拒绝

这里有很多不好的东西

让我们从一个事实开始,即您确实希望将httpd可写文件远离您的代码-当然是在一个单独的目录中,最好是在文档根目录之外

chown-R apache:ApacheWWW并设置文件夹的777权限

你有没有检查过权限到底是什么?顺便说一句,看看上面的观点——如果你让你的整个网站都可以被大家写,那么你只是在自找麻烦。您当然不能同时更改所有者和权限

您是否启用了SELinux?(将sestatus作为root运行)。如果是这样的话,那么您要么需要禁用它,要么学习如何配置它——但我建议您首先使用老式的权限,然后禁用SELinux


C.

文件的权限如何
temp.txt
?temp.txt是我想要创建的一个新文件,它不存在。正如我已经提到的,我对整个文件夹(当然包括newtest.php)做了777。temp.txt是我想要创建的新文件,它还不存在。好的,文件夹本身有以下内容:drwxrwxrwx 8 apache apache 4096 2010-02-13 04:08 public我正在执行的文件:-rwxrwx 1 apache apache 213 2010-02-14 06:34 newtest.phpWeird。您确定temp.txt不存在吗?另外,如果您尝试“sudo-u apache echo test>/var/www/public/temp.txt”,会发生什么?是的,它不在那里。当我启动您建议的命令(在root下)时,它已经创建了它,但是当我再次尝试我的PHP脚本时,它仍然显示相同的错误,即使文件在那里。我肯定这与apache权限有关,但不确定具体是什么..嗯。其他原因可能是php.ini或apache config或.htaccess中启用的安全模式或open\u basedir选项。但我认为他们应该提出稍微不同的警告也许是同一个问题?:-)在Apache中,通常至少有一个默认的vhost配置。您可能希望尝试在那里设置vhost所有者。但您可能还想改进您的问题,因为mod_itk在单个vhost设置中过于致命,我当时不会建议这样做好的,我知道777不是存储文件的方式,但是为了解决这个问题,我不得不尝试所有的方法。我现在禁用了SELinux。sestatus root现在显示“SELinux状态:已禁用”,但问题仍然存在:(有什么想法吗?啊,没有,实际上它有帮助,只是在这里有根权限的旧文件。非常感谢