[英]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);
}
如果重要的话,我正在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被忽略 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.