web-dev-qa-db-ja.com

PHP警告:move_uploaded_file()は移動できません

私はゆっくりとPHPを学び、他の開発者によって投稿された主題と解決策に関する一連の情報を見つけました。AndroidアプリケーションHTTPポスト経由でファイルを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の投稿が正しく送信されることを既に知っています。また、ファイルを書き込んでいるディレクトリに正しい権限があり、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

この問題の助け、またはこれをトラブルシューティングするさらなる方法があれば幸いです。

16
brendosthoughts

所有者を「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によって正常に上書きされます。

19
Niclas Larsson

これで問題が解決しました:

$ Sudo chown -R www-data:www-data /var/www/html/
3
Mona Jalal

これはUbuntuオペレーティングシステムでうまく機能しました。所有権を変更するだけです

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

0
Emmanuel Mbuvi