【问题标题】:tmp file not uploaded PHPtmp 文件未上传 PHP
【发布时间】:2019-09-05 09:54:12
【问题描述】:

自从最近我开始使用 PHP 时,我遇到了上传图片的问题。

我的代码在我的本地机器上运行良好;但是,当上传到我的虚拟机上时,文件没有上传到 tmp 文件夹。

我试图查看使用“print_r($_FILES);”从 $_FILES 填充的数组,这就是我在数组中得到的:

array ( [image] => array ( [name] => avatar-1.jpg [type] => image/jpeg [tmp_name] => /tmp/phpfkhvrw [error] => 0 [size] => 1029 ) )

我查看了 php.ini 文件,一切似乎都井井有条。我还检查了一些其他类似问题的文章,但没有任何建议有效。

我认为这与 envvars 文件中的权限有关,配置如下:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

但是,服务器上的所有文件都以 root 作为用户和组。

我真的希望有人可以分享一些这方面的知识,因为我真的不知道下一步该做什么。

【问题讨论】:

  • 那么你是说/tmp/phpfkhvrw实际上并不存在?
  • 您可以为文件夹分配权限吗?我希望 www-data 可能已经写入该文件夹,即使它不拥有它。文件夹的当前权限是什么?
  • 让我们更清楚一点:文件/tmp/phpfkhvrw 不存在或move_uploaded_file('/tmp/phpfkhvrw', '/some/dest/folder/avatar-1.jpg') 返回false

标签: php apache php-7.2


【解决方案1】:

您在这里向我们展示的内容证明文件上传成功。您需要更具体地说明您认为失败的原因。

正如 Zeusarm 所暗示的,已创建的文件 (/tmp/phpfkhvrw) 在 HTTP 请求完成后不会持续存在 - 它会被 PHP 删除。如果您想在请求后保留此失败,则需要致电move_uploaded_file()

服务器上的所有文件都以root作为用户和组

您可能想要处理您的权限模型。

【讨论】:

  • 感谢您的建议,实际上让我感到困惑的是数组显示 [error],并且很难确定这是导致问题的原因。事实证明,该文件根本没有被移动,我不得不将 html 目录和 tmp 目录的所有者和组更改为“www-data:www-data”。我的问题的答案是:“你可能想要在你的权限模型上工作。”再次感谢!
【解决方案2】:

原来文件被上传到 tmp 目录但没有被移动,因为 html 和 tmp 文件夹的所有者和组是 root

更改了两个文件夹的所有者和组,现在一切正常。

sudo chown www-data:www-data FolderName -R

另外,777 权限可用于所有文件夹,但不建议这样做。

【讨论】:

    【解决方案3】:

    也许为您的功能添加 chmod。示例。

       // move_uploaded_file has is_uploaded_file() built-in
                    if(move_uploaded_file($tmp_file, $file_path)) {
                    echo "File moved to: {$file_path}<br />";
    
                    // remove execute file permissions from the file
                        if(chmod($file_path, 0644)) {
                            echo "Execute permissions removed from file.<br />";
                            $file_permissions = file_permissions($file_path);
                            echo "File permissions are now '{$file_permissions}'.<br />";
                        } else {
                            echo "Error: Execute permissions could not be removed.<br />";
                        }
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2012-12-15
      • 2012-06-04
      • 1970-01-01
      • 2012-03-05
      • 2012-10-25
      • 1970-01-01
      相关资源
      最近更新 更多