【问题标题】:Create directory with script user as owner以脚本用户为所有者创建目录
【发布时间】:2013-05-15 13:27:00
【问题描述】:

我在一个共享主机上(开启了安全模式),我在创建 PHP 可以实际写入的目录时遇到了问题。假设我的帐户名为matty,而apache 帐户名为web

当我使用 FTP 上传脚本时,它们归 matty 所有,它们也在用户 matty 下运行。但由于某种原因,如果我使用mkdirfile_put_contents 创建一个新目录或文件,它归用户web 所有。安全模式会阻止我的脚本将文件添加到新目录,因为 UID 不匹配。 web 帐户的存在对我来说毫无意义,因为我的所有脚本都在我自己的用户名下运行,并且只有在脚本创建自己的文件/目录时才会出现。

我尝试在创建后立即使用chown('directory', 'matty'),但收到错误消息“不是...的所有者”。我只需要在当前执行脚本的用户名下创建文件和目录,或者一些硬编码的用户名。

【问题讨论】:

    标签: php permissions mkdir


    【解决方案1】:

    我在没有 ssh 访问和通过 FTP 进行有限控制的共享主机上遇到了同样的问题。应用程序(作为 apache 运行)无法在通过 FTP 上传的文件夹中创建文件(因此有不同的所有者),而该文件夹的权限为 777 - 我不想要。 我通过以下舞步绕过它:

    1) 通过 FTP,创建一个文件夹并将其权限(临时)设置为 777

    2) 使用 PHP 脚本,在第一个文件夹中创建第二个文件夹,权限设置为 755。PHP 应该可以轻松写入第二个文件夹。

    3) 返回并设置第一个文件夹的权限为 755(通过 FTP)

    ta da - 不再有 777 个文件夹,但 PHP 可以写入文件夹。耶!

    【讨论】:

      【解决方案2】:

      您需要使用 FTP 客户端或 shell 将您的上传目录更改为 web
      并且从现在开始PHP就可以写入这个目录了。

      这是唯一的方法(避免关闭安全模式),因为这个 PHP 指令的目的是防止对其他用户的文件进行任何活动。

      【讨论】:

      • 在此主机上似乎不可能。我只有 FTP 访问权限,并且用户名/组字段显示为灰色,因此必须禁用 chown。我想我可能必须编写一个使用 FTP 创建文件的包装器,因为通过 FTP 手动创建的文件可以正常工作。我的主机永远不会关闭安全模式,所以我想这是唯一的最后手段?
      • @Matt “我的主机永远不会关闭安全模式”现在移动主机,当有成千上万的好主机时,处理一个垃圾主机是不值得的。
      • 这是一个棘手的情况。我们从一个巨大的快速本地数据中心免费获得这个主机。失去所有这些会很遗憾,但你是对的 - 试图让事情在这个主机上运行是一种皇家痛苦。
      • 免费的问题在于你得到你所支付的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多