【问题标题】:Directory is created but do not exist on local server - PHP目录已创建但在本地服务器上不存在 - PHP
【发布时间】:2017-11-10 13:23:55
【问题描述】:

我在 Ubuntu Linux 上使用 PHP 5 和 Codeigniter 3。

我需要在服务器上上传和存储用户文件,但在上传之前我需要为用户创建目录来存储文件。 目录名称基于使用 md5 散列的用户数据。

我也在检查目录是否已经在服务器上创建/存在,否则应该创建。

   public function uploadImage(){

        $id = $this->session->userdata('id');

        $dir_name = md5($id); // create hashed dir name 

        $user_dir = base_url() . 'uploads/user' . '/' . $dir_name;

       // print_r($user_dir);

        if(!file_exists($user_dir)){
            mkdir($user_dir, 0777);
            print_r("created");
        }else{
            print_r("directory exists");
        }
 }

当我运行代码时,它显示已创建,但我看不到目录。它不存在于上传/用户文件夹中。 请帮助我,我错在哪里。非常感谢

【问题讨论】:

  • 这可能是您尝试在 apache 没有写入权限的文件夹内创建一个文件夹。即使 mkdir 不成功并且不指示任何内容,也会到达 print_r 语句。
  • 如果目录不存在,您将被打印为“已创建”。这与在成功创建后打印“created”不同。 var_dump(mkdir(User_dir, 0777)); 我敢打赌你是假的。
  • Rimble 我想这不是问题。我有权在这些目录中写入。
  • 是的,它返回 false mkaatman

标签: php codeigniter upload directory


【解决方案1】:

使用 FCPATH

public function uploadImage(){

   $id = $this->session->userdata('id');

   $dir_name = md5($id); // create hashed dir name 

   /*
       You may need / after FCPATH 

       $user_dir = FCPATH . '/uploads/user/' . $dir_name;
   */

   $user_dir = FCPATH . 'uploads/user/' . $dir_name;

   // print_r($user_dir);

    if(!file_exists($user_dir)){

        mkdir($user_dir, 0777);

        // @mkdir($user_dir, 0777, true);

        print_r("created");

    } else {

        print_r("directory exists");
    }
}

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2013-01-14
    • 2012-11-07
    • 2021-11-14
    • 2018-09-28
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多