我的代码有问题。在我的代码中有一个部分可以在服务器中生成一个目录,当我检查FTP中的目录时,生成了初始文件夹但子文件夹不是,当我尝试打开主文件夹时,有一个日志说:
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);
}
}
在我的localhost中它正常工作,但是当我上传它时有错误。 你能帮我解决这个问题吗?
答案 0 :(得分:1)
您是否尝试使用前导零的八进制数指定权限?
The PHP manual for mkdir
说......
请注意,您可能希望将模式指定为八进制数,这意味着它应该具有前导零。
...试
mkdir($directory, 0777);
答案 1 :(得分: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上的人应该更新他们关于“可能不正确”的页面添加一些说明。