文件系统操作不适用于我的PHP脚本;我需要chmod一些东西吗?

时间:2010-01-21 23:24:11

标签: php permissions chmod

我在PHP中遇到mkdir的一些权限问题。我试图简单地移动一些文件(并创建一个文件夹将它们放入),但我收到此错误:

mkdir() [function.mkdir]: Permission denied in

在我的旧网站上,我将文件夹设置为755,事情似乎工作正常。它似乎就像我唯一可以获得mkdir或相关功能在这个服务器上运行的时候文件夹中有777作为模式。

网络浏览器是否被视为“其他”?我不想在777离开我的文件夹是个好主意,对吗?

4 个答案:

答案 0 :(得分:1)

Web浏览器不是被视为“其他”的对象,而是运行Web服务器的用户,例如httpdapache

一种常见的方法是选择文件以将用户和/或组设置为Web服务器用户,从而允许诸如755之类的权限。

示例:

chown apache:apache ./example/

答案 1 :(得分:1)

这可能适用也可能不适用,具体取决于您运行Web服务器的操作系统,您可能有其他安全机制干扰您尝试执行的操作。一个明显的例子(一时困扰我)是SELinux安全系统。试着看看你是否可以写入/ tmp。如果你不能寻找其他问题。作为一般规则,爆破777权限可能导致安全漏洞。

答案 2 :(得分:1)

如果您需要在服务器上创建可以从Web浏览器写入的文件夹,则可能需要使用至少775.请注意,创建文件的情况不一定如此。实际上,您可能根本不希望您的文件是777。

如果您希望避免让您的服务器(也就是www-data)创建目录,您仍然可以在php代码中使用bash命令,但是您仍然需要在文件夹上放置正确的权限以允许www-data然后将文件写入目录。

检查您的所有权。以上内容基于由www-data拥有的某个用户和组所拥有的文件夹。您还可以尝试将文件夹所有权设置为www-data,但该特定用户的权限仍然是rwx。

我希望这不是一个令人费解的方法。

可以帮助您找出服务器上运行apache的命令:

#top

寻找类似的东西:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                          
20610 www-data  20   0 36772  10m 4380 S    4  0.1   0:04.03 apache2 

#ps aux | grep "apache"

寻找像

这样的东西
www-data 26898  0.0  0.0  34248  4076 ?        S    17:59   0:00 /usr/sbin/apache2 -k start

答案 3 :(得分:0)

你确定问题不在于文件夹所有权吗?

也许chown是解决这个问题的正确命令