1

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

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

在我的旧网站上,我将文件夹设置为 755,一切似乎都很好。似乎只有当文件夹以 777 作为其模式时,才能获得mkdir或相关功能在此服务器上工作。

网络浏览器是否被视为“其他”?我不觉得把我的文件夹留在 777 是个好主意,对吧?

4

4 回答 4

1

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

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

例子:

chown apache:apache ./example/

于 2010-01-21T23:28:23.113 回答
1

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

于 2010-01-21T23:34:02.870 回答
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
于 2010-01-21T23:46:40.947 回答
0

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

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

于 2010-01-21T23:27:40.357 回答