【问题标题】:Making a writeable directory in laravel using mkdir()使用 mkdir() 在 laravel 中创建可写目录
【发布时间】:2015-05-04 14:19:52
【问题描述】:

我的问题不是文件夹被写入,而是它被写入的权限。这是我正在使用的写入文件的代码:

// check if the file/folder exists
$targetPath = 'files/docmoga/';
if(!file_exists($targetPath)){
   $oldmask = umask(0);
   mkdir($targetPath, '0777', true); 
   umask($oldmask);
}
move_uploaded_file($tempFile, $targetFile);

由于权限,它在最后一行失败。以下是写入文件夹的权限:

dr----x--t 2 apache apache   4096 May  4 09:17 docmoga

可能会发生什么导致该文件夹的权限写入错误?如果有帮助,我将使用 laravel 作为框架,我知道这不应该有任何意义。

【问题讨论】:

    标签: php mkdir


    【解决方案1】:

    您是否检查过您的脚本在哪个用户下运行?

    在您的脚本中运行exec('whoami') 并查看输出。它应该是apache 或具有创建文件夹的适当权限的用户。

    还可以尝试使用文字八进制数 0777 与字符串版本 '0777'。取自https://*.com/a/2251293/1133306

    【讨论】:

    • 我认为这将是 apache,因为在写入文件夹时,它是用 apache:apache 的 chown 编写的。此外,whoami 命令返回 apache。
    • 就是这样。这是因为数字是字符串格式而不是文字格式。谢谢!
    • 太棒了!很高兴为您提供帮助。