【问题标题】:How can I allow php to create files with the same ownership as the files that created them?如何允许 php 创建与创建它们的文件具有相同所有权的文件?
【发布时间】:2011-04-07 19:46:15
【问题描述】:

PHP 创建具有 apache:apache 所有权的文件,这似乎导致其他 php 脚本访问该文件时出现问题。

如何允许 php 创建与创建它们的文件具有相同所有权的文件?

我在别处读到开启安全模式会影响此问题,但我已将其关闭并重新上传文件,但仍然遇到同样的问题。

我相信对于更熟悉 apache 的人来说这将是一个简单的问题,但我无法通过四处搜索找到解决方案。

谢谢

【问题讨论】:

  • 你使用的是什么环境? Windows 还是 Linux?
  • 我猜他说的是 Linux。

标签: php apache permissions


【解决方案1】:

如果您使用的是 Windows 操作系统,您可以将 Apache 作为服务启动,并允许 apache 在启动时使用您自己帐户的权限。

【讨论】:

  • 我不是在本地运行它,我是在机架空间服务器上运行它所以 linux
  • 在那种情况下我不知道如何
【解决方案2】:

尝试使用 fileowner (http://www.php.net/manual/en/function.fileowner.php) 获取当前脚本所有者的 id,posix-getpwuid 获取该 id 的用户名 (http://www.php.net/manual/en/function.posix-getpwuid.php) 和 chown (http://php.net/manual/en/function.chown.php) 设置用户文件。

【讨论】:

    【解决方案3】:

    为什么要经历所有程序化的麻烦来更改所有者? apache.apache 无论如何都是一个非常不安全的所有者。为什么不只是chmod 0777 为所有所有者提供读取、写入和执行的文件。这将消除问题。

    如果您仍然遇到问题,那么您可能需要检查 open_basedir 是否已打开。如果是这种情况,则不是文件所有权或权限,而是位置。这基本上意味着您需要将文件放在 apache/php 已包含在其路径中的位置。

    【讨论】:

    • 呃,抱怨 apache 不安全,然后鼓吹 0777 是一个相当古怪的组合。
    • 我的意思是如果 Apache 需要访问这些文件,将它们设置为 0777 不会有太大的不同。就是这样。
    【解决方案4】:

    上午上面提到了 chown(),请注意一般 chown() 只能被 root 使用,而你的 webserver 运行帐户极不可能是 root,这是一个非常糟糕的主意。

    可以设置 sudo 以允许特定区域中的其他用户使用 chown,并且只允许特定用户使用。只需在 /etc/sudoers 中创建一个合适的条目,通常使用 visudo 程序。如果您自己没有 root 访问权限,那么您的托管服务提供商必须为您执行此操作,如果他们愿意的话。

    欲了解更多信息:http://www.sudo.ws/sudo/sudo.html

    【讨论】:

      【解决方案5】:

      如果所有权很重要并且多个用户/项目在同一台服务器上,您可能需要查看 Apache 中的 SuExec:PHP 文件将由设置中指定的用户运行,因此会自动处理文件的默认所有权的。它节省了大量的chown/chmod'ing,并且用户运行的进程更容易受到限制。

      否则,我通常会创建一个包含所有者和 apache 的组,并将默认 umask 设置为 007。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-19
        • 2011-04-16
        • 2014-01-04
        • 2019-08-29
        • 2011-07-29
        • 2011-05-07
        • 1970-01-01
        相关资源
        最近更新 更多