2016-03-22 15 views
1

私は自分のウェブサイトに写真やビデオをアップロードするためのスクリプトを用意しています。私はそれらを表示する必要があります、どのように私は適切なアクセス許可を設定するのですか?phpでユーザーがアップロードしたファイルを表示する方法は?

chmod("upload/" . $_FILES["file"]["name"], 0755) 

これは機能しません。私はそのファイルをWindowsで使用できるようにしたいと思っています。私は何をしますか?

答えて

0

PHPがアップロードしたファイルのchmodを設定する必要はありません.Webサーバーはすでにファイルを所有しているためです。お使いのブラウザで表示するためには、ファイル

の取り扱い

、あなたは次のようなものを使用して、アップロードディレクトリに一時ディレクトリからファイルを移動することを確認する必要があります。

// Define where the uploads directory is 
$upload_dir = '/var/www/uploads/'; 
// Define the upload path from $upload_dir 
$upload_file = $upload_dir . basename($_FILES['file']['name']); 

// Move the tmp uploaded file to the uploads directory 
if(!move_uploaded_file($_FILES['file']['tmp_name'], $upload_file)) { 
    // Handle the failure to move the temp file 
    echo "File did not upload"; 
}; 

パスをvarダンプするか、ファイルが存在するかどうかをチェックすることによって、ファイルが適切な場所に移動していることを確認できます。

// Is path correct? 
var_dump($upload_file); 
// Did the file get moved? 
var_dump(file_exists($upload_file)); 

まだ問題がありますか?

ファイルがサーバーにアップロードされていない場合、いくつかの問題があります。このPHPのドキュメントpage on uploads pitfallsを参照してください。要約:

  • ファイルに直接アクセスしようとしています。アップロードディレクトリは、Webサーバーのドキュメントルートの上にあります。そのため、デーモンはサービスを受けられません。
  • はデフォルトで2Mbに設定されていますが、これは通常画像/動画には小さすぎます。 (php.ini)
  • max_execution_timeは、大きな画像や低速接続のビデオの場合は60秒を超えることがあります。 (php.ini)
  • memory_limit大きなファイルをアップロードするときに超過する可能性があります。 (php.ini)

php.iniをチェックし、必要に応じて値を増やしてください。

もう1つのオプションは、アップロードディレクトリが.htaccessファイルmodの書き換えによって画像の配信がブロックされないことです。

+0

ファイルを私の必要な場所にアップロードして移動しました。 '.htaccess'書き換え規則は適用されておらず、アップロードして見たいだけの226kbの画像です。 –

+0

アップロードディレクトリはドキュメントルートの外にありますか?どのように写真を呼んでいるのですか? – Andy

+0

これはドキュメントルートの外にはないので、私は単にそれらの写真ビューアアプリケーションの1つでそれを表示しようとしています。 –

関連する問題