【问题标题】:Image transfer only working with certain permissions?图像传输仅适用于某些权限?
【发布时间】:2015-01-13 20:43:12
【问题描述】:

我正在使用 PHP 将图像移动到特定目录。如果我拥有 /tmp/ 的权限为 755,它会失败,但如果我拥有 777 的权限,它不会失败。由于 777 不安全,还有其他方法可以做到这一点吗?

我的 PHP 代码是这样的:

$dir = '/var/www/spectrom.benrosen.org/uploadedimages/';
$file = basename($_FILES['uploadimage']['name']);
$uploadfile = $dir . randomize() . $file;

if (move_uploaded_file($_FILES['uploadimage']['tmp_name'], $uploadfile)) {
 exit('{"result": "successful"}');
} else {
         exit('{"result": "could not upload image."}');

}

【问题讨论】:

    标签: php ubuntu permissions ubuntu-14.04


    【解决方案1】:

    Garr 对 /tmp 文件夹的看法是正确的。无论如何,如果您担心文件夹安全,请查看此http://shapeshed.com/securing_upload_folders_in_php_on_unix_servers/,它解释了如何将上传文件夹权限转换为 755。

    【讨论】:

    • 我要为哪个用户授予运行 PHP 的权限?
    • 完整阅读该页面,它描述了将上传文件夹的所有者更改为正在运行的 Apache 和 PHP ,通常是“www”、“apache”或“nobody”。它还指定如果您不知道,请询问您的托管公司。我们使用“www”作为所有者名称
    • 我使用 nginx,并且我托管自己的服务器。
    • 好的,通常取决于很多事情,比如你如何配置你的服务器。但是,最好的选择是 php.ini 用户和组,将其用作所有者名称。正如您所说,您正在使用 nginx,请注意 php.ini 文件。通过这个它会有所帮助:stackoverflow.com/questions/10665783/php-ini-which-one
    【解决方案2】:

    我不会担心 /tmp 文件夹。任何用户都应该能够对其进行写入。您不应该在 tmp 文件夹中留下任何敏感信息。

    这也将失败,具体取决于您的 uploadimages 文件夹的设置。使该文件夹的所有者成为 PHP 进程。那是系统依赖的。如果运行 apache,它可能可以通过 .htaccess 进行控制,但绝对是 httpd.conf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多