2016-04-12 30 views
0

私はphpのreadfile関数を使用して、サーバー上のファイルの完全な直接URLを指定しています。ただし、ファイルをダウンロードする代わりにエラーが表示されるだけです(failed to open stream: No such file or directory in)。ファイルは指定されたディレクトリにあります。ファイルのダウンロード権限が拒否されました

ダウンロードしようとしているファイルがユーザーによってアップロードされています(つまり、オーナーであると思われるhttpdプロセスと思われます)。ただし、次のコードは、ファイルを開くことができないと言う -

$full_path = $row['full_path']; 
      $file_name = $row['file_path']; 
      header("Pragma: public"); 
      header("Expires: 0"); 
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
      header('Content-Type: application/pdf'); 
      header("Content-Type: application/force-download"); 
      header("Content-Disposition: attachment; filename=\"".$file_name."\"");     

      readfile($full_path); 

デフォルトのアクセス許可が755などのディレクトリに設定されたと私はここでいただきました問題を理解することができません755として、私もダウンロードしていたファイルは、アクセス権を示しています。

EDIT:サーバーはhostgatorです。

EDIT:header( "Location:$ full_path")はうまく動作するので、パスには関係しません。

EDIT:$full_pathがどのように見える - $file_pathabc.pdf

ファイル構造のように見えながらuploads/abc.pdf:OPに私のコメントはこの1つを解決しなかったことを見て

--root 
    downloader.php 
     ---uploads 
     abc.pdf 
+1

をまあ:

trim()はちょっとの間

に相談することを固定しているだろう、それは楽しいためにファイルを見つけることができないとは言いません。おそらく、使用されているパスに何か問題があります。 at 'の '$ row [' full_path '];'、 '$ row [' file_path ']'などファイル上の – Oldskool

+2

755はそれらを実行可能にします。それを644に変更してみてください。 –

+0

@Oldskool質問した内容を含めるように質問を編集しました。ありがとうございます。お返事ありがとうございます...ありがとう – codeomnitrix

答えて

3

...

私:

"var_dump()は何ですか;明らかにする?どこにも空白がないことを確認してください。私はこの時点ではうんざりです。フレッド-ii- "

OP:

" WTFは、文字列の末尾の空白がありました。私は本当にこれのために申し訳ありません、私はそれをチェックしたことはありません。君たちのすべてのおかげで... - codeomnitrix」

ミー:http://php.net/manual/en/function.trim.php

+0

ありがとうございました。もしあなたが指摘していないのであれば、私は空白を見ていないでしょう。ありがとうございます – codeomnitrix

+1

@codeomnitrixあなたは大歓迎です。あなたのコードがチェックアウトされているのを見て、それが私がこのすべてを引き起こしたと思った唯一のものでした。これが解決されたことを知ってうれしかった、*歓声*。 –

関連する問題