2015-08-14 66 views
0

我的代码有问题。在我的代码中,有一部分可以在服务器中生成一个目录,当我在FTP中检查目录时,会生成初始文件夹,但子文件夹不是,当我尝试打开主文件夹时,会出现一条日志:如何使用PHP创建目录后设置权限?

Response: 550 /httpdocs/ecommerce/image/catalog/sellers/826: Permission denied 
Error: Failed to retrieve directory listing 

当我检查了新创建的主文件夹中包含该权限:

e(01411) 

在我的代码,我有这样的:

public function addUser($data) { 

    $this->db->query("INSERT INTO `" . DB_PREFIX . "user` SET username = '" . $this->db->escape($data['username']) . "', shop_name = '" . $this->db->escape($data['shop_name']) . "', user_group_id = '" . (int)$data['user_group_id'] . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', image = '" . $this->db->escape($data['image']) . "', status = '" . (int)$data['status'] . "', date_added = NOW()"); 
    $get_customer_id = $this->db->getLastId(); 

    $directory = DIR_IMAGE . 'catalog/sellers/' . $get_customer_id; 

    if(!file_exists($directory)) { 

     mkdir($directory, 777); 

     mkdir($directory . '/profile', 777); 
     mkdir($directory . '/banner', 777); 
     mkdir($directory . '/products', 777); 

    } 

} 

在我localhos它工作正常,但是当我上传时有错误。 你能帮我吗?

回答

1

您的权限设置所有缺少的领先(八进制)为零。

从手册上搭配chmod:

<?php 
chmod("/somedir/somefile", 755); // decimal; probably incorrect 
chmod("/somedir/somefile", "u+rwx,go+rx"); // string; incorrect 
chmod("/somedir/somefile", 0755); // octal; correct value of mode 
?> 

旁注:

我个人认为,在PHP.net的人们应该更新他们对“可能页不正确“增加一些说明。

+0

旁注:我没有看到其他答案,因为它花费了我更多的时间从PHP.net的网站获取信息并将其输入。 –

+0

好的谢谢,但你是什么意思'可能不正确'? – Jerielle

+0

@Jerielle不客气。我没有写这个,我从PHP.net上的一个例子中看到它看看http://php.net/manual/en/function.chmod.php就我个人而言,我认为他们应该更新他们的页面。 –

1

您是否尝试过使用带前导零的八进制数来指定权限?
The PHP manual for mkdir说...

请注意,你可能要指定的模式作为一个八进制数,这意味着它应该有一个前导零。

的Try ...

mkdir($directory, 0777);