2012-01-03 6 views
0

イメージアップローダーを作成していますが、2つのエラーが発生しました。PHP:トラブルのアップロード

Warning: move_uploaded_file(upload/Corgi 007.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/stationr/public_html/admin/doupload.php on line 12 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/chroot/tmp/phpMvRSbS' to 'upload/Corgi 007.jpg' in /home/stationr/public_html/admin/doupload.php on line 12 

move_uploaded_file()メソッドを呼び出すとエラーが発生します。ここに私のコードがあります(これはまったく裸のものがアップロードされていることを確認するエラーはありません)。アップロードがすべてで成功した場合

<?php 
error_reporting(E_ALL); 
error_reporting(-1); 
ini_set('error_reporting', E_ALL); 

$filename = $_FILES["file"]["name"]; 
$filesize = $_FILES["file"]["size"]; 

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/$filename"); 

?> 

答えて

1

あなたがチェックに失敗しました:

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { 
    move file ... 
} else { 
    die("Upload failed with error code " . $_FILES['file']['error']); 
} 

エラーコードはここに記載されています:http://www.php.net/manual/en/features.file-upload.errors.php

を同様に、「アップロード」サブディレクトリがしてありますあなたのスクリプトの現在の作業ディレクトリは何ですか? Webサーバープロセスにそのディレクトリに対する書き込み権限がありますか?

重要なセキュリティホールとして、アップロードのパラメータ['name']をターゲットファイル名として使用すると、悪意のあるユーザーがあなたのサーバー上の任意のファイルを書くことができます。決して盲目的にそのファイル名を使用しないでください。アップロードファイル名が(例えば)../../../../../../etc/passwdとして提供されている場合は、システムパスワードファイルを置き換えることができるようになりました。

+0

ああ、それは恥ずかしいです。私の急いで私は完全に "../"を宛先フォルダに追加するのを忘れました。そして確かに私はアップロードのセキュリティ面についてすべてを知っています(アップローダは安全な管理者ログインによってのみアクセス可能です)。助けてくれてありがとう。 –

+0

あいまいでセキュリティを守らないでください。誰かがログインをハック/バイパスすることができたとしても、あなたのサーバーをゴミ箱にするツールを提供してはいけません。彼らは彼らが得ることができる地面のあらゆるビットのために戦う。 –