【问题标题】:Folder permissions when telling PHP to save a file to that folder?告诉PHP将文件保存到该文件夹​​时的文件夹权限?
【发布时间】:2012-08-29 03:46:11
【问题描述】:

我正在尝试使用此Dagon Design PHP 表单来帮助当地的非营利性出版物使其读者能够提交照片。我的“邮件程序”部分工作正常——通知工作正常——但“将文件保存到文件夹”部分不起作用。

在表单页面上,作者说“该目录必须具有写入权限”,但我不确定“谁”正在写入该文件夹 - 当这个 PHP 脚本将某些内容保存在我的地点?还是我需要允许所有者、组和其他人的保存权限?

我不确定脚本为什么不保存照片,但这似乎是一个不错的起点。我在 Stack 上 tried looking around 寻求答案,但大多数问题似乎与文件夹创建/权限有关。

我笨拙地尝试构建的页面是here,如果有帮助的话。

【问题讨论】:

    标签: php upload permissions


    【解决方案1】:

    正如 Jon 已经说过的,你不想让每个人都有写权限。

    也有可能(取决于托管)正在使用 suEXEC 之类的东西 - 这将导致您的 PHP 脚本以用户身份运行其他而不是网络服务器的用户(如 Dunhamzzz 所报告的)。

    在我看来,您最好的方法可能是调用 whoami 的脚本:

    passthru('whoami');
    

    或者你也可以试试:

    var_dump(posix_getpwuid(posix_geteuid()));
    

    请记住,这确实会将系统信息公之于众 - 所以一旦你使用了脚本就删除它!

    那么,正如您在问题中正确断言的那样,很可能是文件权限。

    如果您确实具有 CLI 访问权限,则可以安全地更新权限(第一个命令获取组)

    id -n -g <username>
    chmod 770 <directory>
    chown <username>:<group> <directory>
    

    (您可能必须在上面的“chown”命令前加上“sudo”,或者找到其他方式以“root”身份运行它...,如果遇到困难请回复。)

    如果您无权运行命令行,您可能会通过 (S)FTP 客户端或类似方式执行此操作。恐怕此时选项会变得有点宽泛,您必须弄清楚(或回复您正在使用的客户!)

    一如既往,YMMV。

    最后,请记住,如果这是您自己的代码,人们有时会尝试上传 PHP 脚本(或更糟)。如果可以通过公共 URL 访问该目录……那么您将打开最大的安全漏洞! (.htaccess 或非文档根位置是您的朋友。)

    【讨论】:

      【解决方案2】:

      如果您不确定您的服务器是如何配置的(这会影响谁是最终的文件所有者),请向任何人添加写入权限 (chmod a+w folder),上传一个文件并 ls -l 以查看所有者。然后您可以调整权限以仅允许某些用户进行写访问

      【讨论】:

        【解决方案3】:

        保存文件的 PHP 脚本以服务器上某些用户帐户的权限运行;具体帐户取决于您的操作系统和 Web 服务器配置。在 Linux 上,当 PHP 作为 Apache 模块运行时,此用户与运行 Apache 的用户相同。

        解决您的问题简化为确定我们正在谈论的用户帐户,然后确保该用户有权写入保存目录(作为所有者或作为组成员;授予每个人写入权限不是最好的主意)。

        【讨论】:

          【解决方案4】:

          您需要将目录的权限设置为网络服务器的权限(可能是 Apache、nginx 或类似服务器),因为这就是执行 PHP 的内容。

          你可以用ps aux | grep apache快速找到apache用户,然后你想设置上传目录的权限给那个用户,像这样:

          chown -R www-data:www-data images/uploads
          

          【讨论】:

            猜你喜欢
            • 2012-01-06
            • 2015-09-18
            • 2010-11-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-31
            • 2019-03-22
            相关资源
            最近更新 更多