许可后的mkdir

问题描述:

否认我用mkdir()到我的服务器上创建一个目录:许可后的mkdir

// $var_name is equal to an md5() hash 
$path = "/var/www/publish/" . $var_name; 
if(mkdir($path)) { 
    echo "success"; 
} else { 
    echo "error"; 
} 

这将产生一个错误,由于拒绝权限。查找我的服务器上,通过做ls -lh

drwxr-xr-x 2 root  root 4.0K Aug 17 09:05 publish 

但如果我的$path等于$path = "/var/www/" . $var_name;会造成我的预期的文件夹。这里似乎是什么问题。

+2

@PLB它看起来像发布已经存在,所以这不是问题。然而,只有'root'具有写访问权限的用户肯定会阻止你创建新目录(因为谁以root身份运行他们的web服务器工作者......) – Leigh 2012-08-17 10:12:47

+0

@Leigh是的,没错。这就是为什么我删除了我的评论和答案。 – Leri 2012-08-17 10:14:22

/var/www/publish文件夹的权限错误。您需要确保apache用户具有创建目录所需的权限。

您可以在/var/www/中创建目录,因为它具有不同的权限。

检查httpd进程运行的用户名和chown -R user:group /var/www/publish到该用户/组。在debian上,这看起来是www-data/www-data,所以你需要运行以下命令chown -R www-data:www-data /var/www/publish

+0

能否详细说明一下? – 2012-08-17 10:13:30

+0

@LeandroGarcia已更新以反映附加信息 – ChrisBint 2012-08-17 10:16:12

+0

“检查httpd进程正在运行的用户的名称” - 如何? – 2012-08-17 10:16:22

使用的mkdir()与PHP当它与Apache用户(在Ubuntu上WWW的数据)来执行,你可以通过设置相同的权利上发布您有/无功/网络使用CHOWN

在Ubuntu:

chown www-data.www-data /var/www/publish 

问候

用于发布文件夹mimiz

修复权限(root所有!)。一个不安全方式:chmod 777 /var/www/publish

这是更好地suphp运行,改变发布文件夹的所有者,以你的PHP用户(+ W许可)。