许可后的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;
会造成我的预期的文件夹。这里似乎是什么问题。
/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
。
能否详细说明一下? – 2012-08-17 10:13:30
@LeandroGarcia已更新以反映附加信息 – ChrisBint 2012-08-17 10:16:12
“检查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许可)。
@PLB它看起来像发布已经存在,所以这不是问题。然而,只有'root'具有写访问权限的用户肯定会阻止你创建新目录(因为谁以root身份运行他们的web服务器工作者......) – Leigh 2012-08-17 10:12:47
@Leigh是的,没错。这就是为什么我删除了我的评论和答案。 – Leri 2012-08-17 10:14:22