2011-01-17 1 views
11

私が作業しているウェブサイト用の小規模なCMSを作成し、ウェブサイトで使用するイメージファイルをアップロードするフォームを用意しました。ファイルを正常にアップロードしますが、設定したアクセス許可ではファイルをブラウザで表示できません。ここでPHPによってアップロードされたファイルのパーミッションを変更します

は文脈では

$typepath = $_POST['filetype']; 

$target_path = "../../images/uploads/".$typepath."/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "<p>The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded</p>\n<p>To the directory: <span style=\"font-weight:bold;\">".substr($target_path, 6)."</span></p>"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 
+0

ブラウザはファイルのアクセス許可とは関係ありません。あなたは、コピー貼り付けのエラーメッセージを使って、よりリアルなストーリーを教えてください。ありがとう –

+0

@Col。 Shrapnel - そうです。ファイルにサーバに対する読み取り権限がない場合、ブラウザは '401 not authorised'エラーを受け取ります。 – Spudley

+1

@Spudleyそれは403です。それはまだ**サーバー**の問題であり、ブラウザの問題ではありません。 –

答えて

20

PHP Manaual chmodhttp://php.net/manual/en/function.chmod.php

chmod("/somedir/somefile", 0755); 

ファイルをアップロードするために私の現在のPHPコードです。

$typepath = $_POST['filetype']; 

$target_path = "../../images/uploads/".$typepath."/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    chmod($target_path, 0755); 
    echo "<p>The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded</p>\n<p>To the directory: <span style=\"font-weight:bold;\">".substr($target_path, 6)."</span></p>"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 
+2

ああクール!治療をしなさい。 – Max

+1

喜んで助けてもらえます –

+1

chmod 755を使うと、所有者が読み書きして実行できることを意味します。グループは現在読み書きできます。 「その他」(他の誰でも)が読み書きできます。さて、私は人々がディレクトリに入ることができないだろうと思っていますが、もしそうなら、彼らはあなたのファイルに有害なものを注入する可能性があります。私はいつもchmod 750の代わりに行くつもりです。 –

関連する問題