tmp文件未上传PHP

时间:2019-04-15 12:03:45

标签: php apache php-7.2

自最近以来,我正在使用PHP,但是在上传图片时遇到了问题。

我的代码在本地计算机上运行良好;但是,在我的VM上上传文件时,该文件不会上传到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用户和组权限。

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

3 个答案:

答案 0 :(得分:2)

您在此处向我们显示的内容证明文件上传成功。您需要更加详细地说明失败的原因。

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

  

服务器上的所有文件都具有root用户和组权限

您可能需要处理权限模型。

答案 1 :(得分:1)

事实证明该文件是在tmp目录中上载的,但由于html和tmp文件夹的所有者和组是 root 而没有被移动。

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

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

或者,可以在所有文件夹上使用权限777,但不建议这样做。

答案 2 :(得分:0)

也许为您的功能添加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 />";
                    }
            }