2010-02-07 120 views
6

在过去的2个小时里,我已经拉出了我的头发,并确信我正在做一些非常愚蠢的事情。mkdir不能在PHP中工作

<?php 
mkdir("blah", 0777); 
?> 

这是通过命令行工作并创建文件夹。但是当我尝试通过浏览器运行它时,同样的事情就不起作用。任何文件权限问题?

+0

我被这个困住了很长时间,其他人。如果你在SELinux上,还有一个额外的权限层叫做“安全上下文”,你可以用'ls -alZ'来看。使用类似'chcon system_u:object_r:httpd_sys_content_t:s0 public_HTML' – changokun 2013-03-12 13:04:01

回答

11

难道可能是在命令行下运行时,该脚本会继承您的权限,但它不会在浏览器中运行的时候?

在这种情况下,你会想让你的目录权限'写'组。

+4

哈哈! 10,000声望!好哇! – 2010-02-07 04:01:10

3

您的Web服务器(Apache的?)正在运行,因为它是自己的用户,并且不具有写权限您正在运行的mkdir目录。

给写信给你的Web服务器的用户权限通过A)使其成为所有者,B)如果该组具有写入权限,则将其添加到该组,或者C)给予每个人写入权限(对于大多数设置不推荐)。

+0

有同样的问题,解决了!我首先创建了一个带有FTP的文件夹,当使用mkdir创建文件夹时,它不起作用。删除文件夹并确保脚本创建它解决它。 – Pedro 2014-11-21 16:12:14

0

你可以用umask尝试,当PHP被用作服务器模块,当每个请求完成umask的恢复。

$old = umask(0); 
mkdir($path,0777); 
umask($old);