【问题标题】:PHP mkdir not working -- may be related to Mac localhostPHP mkdir 不工作 - 可能与 Mac localhost 有关
【发布时间】:2013-01-28 05:42:54
【问题描述】:

我正在尝试在我的 PHP 脚本中执行以下代码:

if (!is_dir($path . 'channel-partners/html/intro-letter/' . $name_url)) {
      mkdir($path . 'channel-partners/html/intro-letter/' . $name_url, 0777, true);
}

$name_url 是运行时传入的字符串。当我尝试在我的 Mac 本地主机中执行此操作时,我获得了许可。我想知道问题是否不是我的脚本,而是我在 Mac 上设置 Apache 的方式。我是否需要做一些特殊的事情来配置 Apache 以允许它创建文件和创建目录(这里没有显示文件创建)?

【问题讨论】:

  • Apache 用户组需要权限才能创建文件和文件夹。
  • mkdir 函数是否返回 false
  • @Damien--如何设置用户组有权限?
  • @user20232359723568423357842364 - 我不确定它是否返回错误。我得到的错误是权限被拒绝。
  • 如果您无法在 php 脚本中使用 0777 模式创建递归文件夹。然后通过将当前用户更改为 apache 并再次测试它来尝试。

标签: php macos apache mkdir


【解决方案1】:

您可能应该为 apache 用户设置适当的权限到您的目标文件夹。

【讨论】:

  • 需要权限的文件夹是channel-partners/html。我该怎么做?
  • 在终端中使用chmod命令或在osX上查看文件夹的信息(人人可读写)
  • 如果你设置到合适的组,是的。
  • 我收到you are not a member of group _www
  • 我不知道你的配置。您应该使用 chmod -R o+w /pathTo/channel-partners 将使用 chmod 的其他人的写入权限添加到您的频道合作伙伴文件夹中
【解决方案2】:

运行 Apache 的用户或组需要对父 DIR 具有写入权限。 Mac 上默认安装的 Apache 在名为 _www 的用户和组下运行,所以

chgrp -R _www /the/parent/directory/here 应该可以完成这项工作。请参阅man chmodman chownman chgrp 了解更多信息。

【讨论】:

  • 对不起,是的。该命令将使 _www 成为 /the/parent/directory 的组,因此该组也需要对该文件夹具有写入权限。可能值得您查找 Unix 权限结构。
  • 我收到you are not a member of group _www
  • sudo chgrp -R _www /the/parent/directory/here 然后确保他们具有sudo chmod -R g+rw /the/parent/directory 的读/写权限
  • 这次是用了命令,但还是报同样的错误。
猜你喜欢
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2017-02-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
相关资源
最近更新 更多