繁体   English   中英

警告:mkdir():权限被拒绝

[英]Warning: mkdir(): Permission denied

创建新帐户时,我试图建立目录。
该目录应位于我的图像文件夹中,用于更好地分离上载的图像。

//get the ID of the new account that was just created/inserted
$accountID = mysqli_insert_id($dbc);

//create a new directory path for that account
$directoryPath =  "../images/" . $accountID;

// check if the directory exists
if (!is_dir($directoryPath)) {
    //create the directory
    mkdir($directoryPath, 0777);         //breaking here
}      

几天前我可以正常使用它,但是今天进行测试时遇到了问题。

我已经包含了ini_set('display_errors', 'On'); 在我的页面上查看我抛出了什么错误,这是一个权限错误。

Warning: mkdir(): Permission denied

images文件夹对所有用户和组以及任何父文件夹都具有完全的读/写权限,因此我不知道这将是一个问题,并且它已经工作了好几次。

如果重要的话,我正在Windows上工作。

有任何想法吗?

为了避免在CLI用户和Apache用户之间的权限问题上花费过多时间,一种简单的配置是将相同的用户用于两个进程。

通过执行操作获取用户ID和组

$ id
uid=1000(my_user), gid=1000(my_group), ...

接着:

$ sudo service apache2 stop
$ sudo vi /etc/apache2/envvars
export APACHE_RUN_USER=my_user
export APACHE_RUN_GROUP=my_group
$ sudo chown -R my_user /var/lock/apache2

比将您的整个目录权限更改为777更好,更安全

您必须确保父目录允许您创建文件夹,而不是创建自己的文件夹(使用0777权限创建的文件夹)...
另外,检查与哪个用户一起启动Apache服务器
使用mkdir()之前检查目录是否已经存在

if (!is_dir ($directoryPath) ) {
    mkdir($directoryPath, 0777);
}

我认为您应该尝试-

mkdir("../images/".$accountID, 0777, 'R');

递归文件夹创建可能会导致此问题。 还可以从-mkdir获取更多信息

同时检查文件夹权限。

如果重要的话,我正在Windows上工作。

是的

尝试改变这个

if (!is_dir($directoryPath)) {
    //create the directory
    mkdir($directoryPath, 0777);         //breaking here
}   

对此

if (!is_dir($directoryPath)) {
    //create the directory
    mkdir($directoryPath);         //breaking here
}   

您在Windows机器上,因此它将忽略chmod模式。 也请尝试使用完整路径而不是相对路径。

默认情况下,模式为0777,这意味着可能的访问范围最广。 有关模式的更多信息,请阅读chmod()页面上的详细信息。

注意:在Windows上,mode被忽略

http://php.net/manual/en/function.mkdir.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM