2011-08-16 17 views
0

私はサーバー上のファイルアップロードのためのスクリプトをPHPで書いています。そして、私は、フォルダにすべてpermisionsをチェックしてさえいる。..move_uploaded_file()が動作しません

Warning: move_uploaded_file(uploaded_images/Mordent.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied 


Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpOWVz7o' to 'uploaded_images/Mordent.jpg' 

を)..

$target_path = "uploaded_images/"; 
$target_path = $target_path . basename($_FILES['image']['name']); 
if(move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) { 

    echo "The file ". basename($_FILES['image']['name']). 
     " has been uploaded"; 
    } else{ 
    echo "There was an error uploading the file, please try again!"; 
} 

しかし、関数move_uploaded_file(以下れるコードが動作していない、それは次のエラーを与えますphp.iniのセーフモードはオフです。

私を助けてください私はこれが緊急に行われる必要があります。

答えて

3

相対パス名(uploaded_images/Mordent.jpg)はここでは使用しないでください。相対パスを絶対パスに変換するためにPHPの作業ディレクトリがどのように使用されるかは、必ずしも明らかではありません。

あなたに画像を移動しようとしているディレクトリのような$target_pathを定義し、あなたのスクリプトと同じディレクトリにある場合:__DIR__部分がディレクトリにあなたの現在のスクリプトを絶対パスを与える

$target_path = __DIR__ . '/uploaded_images/'; 

その中に「相対的な」部分を追加します。

+0

この回答では以前に 'dirname(__ FILE __)'が使用されていました。 PHP 5.3以来、もっと短い '__DIR__'が利用可能であり、まったく同じものです。 –

1

あなたのコードで完全に罰金...ちょうどあなたがすべての読み取りアクセス権のためにアップロードされたファイルに0777のよう

を移動しているディレクトリのパーミッションを変更し、あなたがそれを手動で行うことができます 書き込みやPHPを経由して、それを変更します

関連する問題