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

问题描述:

我想创建一个新帐户时创建一个目录。
该目录应位于我的图像文件夹中,用于更好地分离上传的图像。警告:mkdir():权限被拒绝

//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

的图像文件夹对所有用户和组以及任何父文件夹,所以我不明白怎么会是一个问题,那和之前工作过几次完全的读/写权限。

我正在研究windows,如果这很重要。

任何想法?

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

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

,然后让你的用户ID和组:

$ 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

+0

但是由于uid gid的改变,似乎codeigniter不能在/ var/lib中写会话/ php/sessions/ci_sessionxxxxxxxxxx – 2018-01-20 08:15:59

你必须确保父目录允许您创建文件夹,而不是正在被用权利...
还创建的文件夹它的自我检查与用户的Apache服务器启动
检查目录已经在使用mkdir()

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

是的,我有这个已经和我仍然得到了这个问题,本来应该在我的答案很抱歉,我现在编辑。然而,我将如何去检查哪个用户apache服务器启动? – Zoxac 2015-04-02 13:46:35

+0

ps aux | grep apache – Carey 2015-04-02 14:00:34

+0

你怎么lanch你的Apache服务器?服务或命令行? – 2015-04-02 14:08:18

之前,我想你应该试试这个存在 -

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

递归文件夹创建可能导致问题。 也得到更多的信息 - mkdir

也检查文件夹的权限。

+0

试过这个,没有工作 – Zoxac 2015-04-02 14:35:09

我在窗户上工作,如果重要的话。

它的确如此。

尝试修改此

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上的模式被忽略。

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

+0

我试着拿出'0777',我仍然被抛出相同的权限问题。包括完整路径的好方法是什么? – Zoxac 2015-04-02 14:22:50

+0

尝试你拥有它的方式,但完整路径将你的完整目录映像文件夹。 exampe。 'C:/ www/mysite/images' – 2015-04-02 14:24:35

+0

K我也会试试这个谢谢 – Zoxac 2015-04-02 14:26:59