5

我用来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

但如果 my$path等于$path = "/var/www/" . $var_name;它将创建我期望的文件夹。这里似乎有什么问题。

4

3 回答 3

10

/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-17T10:12:12.247 回答
2

当将 mkdir() 与 PHP 一起使用时,它由 apache 用户(ubuntu 上的 www-data)执行,您可以使用 chown 在 /var/www 上设置相同的发布权限

在 ubuntu 上:

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

问候

咪咪

于 2012-08-17T10:14:06.297 回答
0

修复发布文件夹的权限(由 root 拥有!)。一种不安全的方式:chmod 777 /var/www/publish

最好运行 suphp 并将发布文件夹的所有者更改为您的 php 用户(+w 权限)。

于 2012-08-17T10:29:31.157 回答