2

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

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

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

如果有帮助,我笨拙地尝试构建的页面就在这里。

4

4 回答 4

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 或非文档根位置是您的朋友。)

于 2012-09-04T13:49:00.940 回答
0

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

于 2012-09-04T13:14:40.900 回答
0

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

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

于 2012-09-04T13:15:30.443 回答
0

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

您可以使用 快速找到 apache 用户ps aux | grep apache,然后将上传目录的权限设置为该用户,如下所示:

chown -R www-data:www-data images/uploads
于 2012-09-04T13:17:29.497 回答