【问题标题】:PHP Warning: move_uploaded_file() unable to movePHP 警告:move_uploaded_file() 无法移动
【发布时间】:2012-12-05 12:22:30
【问题描述】:

我一直在慢慢学习 PHP,并找到了其他开发人员发布的有关该主题和解决方案的一系列信息。我正在尝试让一个 android 应用程序通过 HTTP post 将文件上传到 PHP 服务器。但是,在我的服务器端尝试用 PHP 写入文件时,有些东西不起作用。

这是 PHP 代码:

// Where the file is going to be placed
$target_path = "/var/www/media2net/uploads/uploads";

/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);

if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']) .
        " has been uploaded";
    chmod("uploads/" . basename($_FILES['uploadedfile']['name']), 755);
} else {
    echo "There was an error uploading the file, please try again!";
    echo "filename: " . basename( $_FILES['uploadedfile']['name']);
    echo " target_path: " .$target_path;
}

我已经通过在客户端检查 Wire Shark 知道 http post 已正确发送,并且我已确保我正在写入文件的目录具有正确的权限,并且 php 安全模式设置为关闭。

apache2 error.log 文件的输出为

[Wed Dec 05 09:25:36 2012] [error] [client 74.14.162.250] PHP Warning:  
move_uploaded_file(): Unable to move '/tmp/phpVLOnn3' to  
'/var/www/media2net/uploads/downloaded_file.png' 
in /var/www/media2net/upload.php on line 9

任何有关此问题的帮助或解决此问题的进一步方法将不胜感激。

【问题讨论】:

  • 上传文件夹是否可写?
  • 您确定权限正确吗?你能发布ls -l /var/www/media2net | grep uploads 命令的输出吗?
  • 首先检查 $target_path 变量它是否包含双重上传并检查 var/www 是否有写权限。我想它会帮助你。
  • 如果这有所不同,这是一个运行 ubuntu server 12.04 的亚马逊 ec2 实例
  • 对不起,这绝对是文件权限(令人沮丧)

标签: php file file-upload html-post


【解决方案1】:

这解决了我的问题:

$ sudo chown -R www-data:www-data /var/www/html/

【讨论】:

    【解决方案2】:

    通过使用“chown”或“chmod”更改所有者来更改 /var/www/media2net/uploads/ 的上传权限

    例子

    $ sudo chown apache:apache /var/www/media2net/uploads/
    $ sudo chmod 755 /var/www/media2net/uploads/
    

    另外,如果downloaded_file.png 已经存在于该目录中并且它由另一个用户拥有,那么您还需要更改该文件的所有权。

    $ sudo chown apache:apache /var/www/media2net/uploads/downloaded_file.png
    

    这样就可以被Apache成功覆盖了。

    【讨论】:

    • 是的,我知道。这只是一个例子,改变它。
    • 将所有权切换到 apache:apache 对我不起作用。我使所有权与原始 php 脚本的所有者相同。这也允许我使用限制性更强的 chmod 770。
    • 必须使用与网络服务器相同的用户(如果您正在使用 mod_php)或与 php-fpm 相同的用户(如果您正在使用)。例如,Debian 将 www-data 用于 apache。
    【解决方案3】:

    这个在 Ubuntu 操作系统中运行良好。您只需要更改所有权

    sudo chown -R www-data:www-data (path to the image folder)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2016-09-02
      相关资源
      最近更新 更多