【问题标题】:PHP - mkdir() creates first recursive directory, but not the ones inside itPHP - mkdir() 创建第一个递归目录,但不是其中的目录
【发布时间】:2018-09-07 16:07:37
【问题描述】:

我在 PHP 中遇到了一个奇怪的问题

我有以下代码

function subirFotoTemporal($idhash)
{
    global $target_dir;
    $dirfinal = $target_dir."temporales/".$idhash;
    if (!is_dir($dirfinal))
        mkdir($dirfinal, 0664, true);     
    [...]

但是,我在最后一行收到警告:mkdir(): Permission denied [...]

这会导致后续代码失败,因为它依赖于在此阶段创建的目录。结果发现创建了目录temporales,但没有创建基于$idhash 的目录。 temporales 文件夹是使用 0644 权限集而不是命令中指定的 0664 创建的。

我检查了网站上的类似问题,并检查了 Apache 环境中的每个文件都设置为 www-data 所有者。

这可能是什么原因?

【问题讨论】:

  • 您对您的服务器有 root 访问权限吗?
  • 一切都在本地环境中完成,所以是的。
  • 好的,我注意到您没有为 $target_dir 定义任何内容。例如global $target_dir; $target_dir = $_SERVER['DOCUMENT_ROOT'];
  • $target_dir 定义在函数范围之外,变量的内容是无关紧要的(__DIR__."/foo/")。
  • 尝试使用0755

标签: php permissions directory


【解决方案1】:

原来这是@JamesBond 建议的权限问题。

进一步的测试表明我需要将执行权限设置为所有者。 07xx

【讨论】:

最近更新 更多