我mkdir
在 PHP 中遇到了一些权限问题。我试图简单地移动一些文件(并创建一个文件夹来放置它们),但我收到了这个错误:
mkdir() [function.mkdir]: Permission denied in
在我的旧网站上,我将文件夹设置为 755,一切似乎都很好。似乎只有当文件夹以 777 作为其模式时,我才能获得mkdir
或相关功能在此服务器上工作。
网络浏览器是否被视为“其他”?我不觉得把我的文件夹留在 777 是个好主意,对吧?
我mkdir
在 PHP 中遇到了一些权限问题。我试图简单地移动一些文件(并创建一个文件夹来放置它们),但我收到了这个错误:
mkdir() [function.mkdir]: Permission denied in
在我的旧网站上,我将文件夹设置为 755,一切似乎都很好。似乎只有当文件夹以 777 作为其模式时,我才能获得mkdir
或相关功能在此服务器上工作。
网络浏览器是否被视为“其他”?我不觉得把我的文件夹留在 777 是个好主意,对吧?
Web 浏览器不是被视为“其他”的对象,而是运行 Web 服务器的用户,例如httpd
或apache
。
一种常见的方法是 chown 文件以将用户和/或组设置为 Web 服务器用户,从而允许诸如 755 之类的权限。
例子:
chown apache:apache ./example/
这可能适用也可能不适用,具体取决于您运行网络服务器的操作系统,您可能有其他安全机制干扰您尝试执行的操作。一个明显的例子(让我困惑了一段时间)是 SELinux 安全系统。尝试查看是否可以写入 /tmp。如果你不能寻找其他问题。作为一般规则,爆破 777 权限可能会导致安全漏洞。
如果您需要在服务器上创建文件夹,然后可以从 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
您确定问题不在于文件夹所有权吗?
也许 chown 是解决这个问题的正确命令