【问题标题】:PHP - Create a folder and put a file in itPHP - 创建一个文件夹并将文件放入其中
【发布时间】:2018-04-29 03:25:00
【问题描述】:

我需要将一个文件放在以当前日期(Ex : folderbefore/2017-11-15/mynewfile.sql)命名的文件夹中。

我试过了:

  • 在服务器中将folderbefore改成777(我知道不好,但试过了,还是不行)
  • 将 www-data 添加到 folderbefore 的所有者组
  • 在创建文件夹之前将 umask 设置为 0:

    $old = umask(0);
    $directory_was_created = mkdir($path, 0777);
    umask($old);
    
  • 我尝试在更改权限后添加 chmod

    $old = umask(0);
    $directory_was_created = mkdir($path, 0777);
    chmod($path, 0777);
    umask($old);
    

我总是得到一个具有 775 权限的文件夹,并且无权在这个新创建的文件夹中写入(尝试使用给我 FALSE 的 file_put_content 和抛出错误的 fopen)。

我错过了什么?

【问题讨论】:

  • 您遇到的错误是什么?你确定是权限吗?
  • 不确定,但该文件夹是由代码使用 775 创建的,当我在 linux 控制台中的已创建文件夹上尝试 chmod 777 并重新运行代码时,该文件已创建。

标签: php


【解决方案1】:

好的,我在发布问题后立即发现了问题。

我正在流浪机器上的测试服务器上工作。为了让我的计算机能够访问 folderbefore,我需要在我的 Vagrantfile 中添加它并重新启动机器:

config.vm.synced_folder "path/to/folderbefore", "path/to/folderbefore/on/my/computer", id: "unique-id-for-this-folder",
owner: "vagrant",
group: "vagrant",
mount_options: ["dmode=777,fmode=777"]

【讨论】:

    【解决方案2】:
    $directory_was_created = mkdir($path, 0777);
    

    需要

    $directory_was_created = mkdir($path, 0777, true);
    

    如果你想在新创建的目录中创建嵌套目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 2012-06-19
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多