私はPHPでApacheアプリケーションを使用しています。いくつかのセキュリティ上の理由から私は文書や画像をWebルートの外に保っています。ユーザーのログイン時に、これらの画像をどのように表示できますか?私はどのように私のPHPアプリケーションのWebルートディレクトリの外に画像を表示できますか?
5
A
答えて
9
デフォルトでPHPはopen_basedir
指令(またはセーフモードで制限されていないが、あなたがそのケージにいないことを望みます)で制限されていない限り、Webルート以外のファイルにアクセスできます。
通常、VirtualHost構成内にopen_basedir
制限を挿入することをお勧めします。 Linuxでは:
、Windowsでは;
で区切って複数のディレクトリを指定できます。どちらかそれらのファイルにアクセスすると呼ばれるPHPファイルの位置への絶対パスまたは相対パスを使用するには
php_admin_value open_basedir /var/www/s/stage:/usr/share/php:/your/dir
。 (したがって、上記のレベルに達するには../
が必要です)。
また、書き込み先のディレクトリがWebサーバーユーザーに割り当てられ、書き込み権限を持っていることを確認してください。同様の内容で、 "image.php" ファイルを作成し、あなたのwwwディレクトリ内
:
<?php
header('Content-Type: image/png');
readfile("../img/" . $_GET['img']);
?>
そして
であなたのイメージを呼び出すは、そうでなければ、2番目のオプションを持っています
<img src="image.php?img=myimage.png" />
あなたのPHPファイルはあまり単純ではないことに注意してください:)あなたは複数の画像フォーマットに対処することができますそれらの正しいヘッダーを指定する)、悪意のあるファイルのパス/インクルージョン(入力の検証/サニタイズなしで$ _GETを使用したくない)、余分なキャッシュなどをチェックします。
しかし、あなたの問題をどのようにターゲットにできるかについてのアイデア。そのような単純な
3
、この意志出力正しいヘッダを持つ画像、
あなたは、出力バッファ
=>無エコーや廃盤何かをフラッシュする前にヘッダを()に設定する必要があることを覚えて
$file = '../../somedirectory/image.jpg‘; header('Content-Type:image/jpeg‘); header('Content-Length: '.filesize($file)); echo file_get_contents($file);
0
)(ReadFile関数の前にPHPのob_clean()関数を使用
それが問題
関連する問題
- 1. PHP CodeigniterのルートディレクトリからWebページに画像を表示するには?
- 2. どのように私はPHPで画像を構築できますか?
- 3. はどのように私は私のWebアプリケーションではasp.net
- 4. 私はこのような表示画像たい画像CSS
- 5. CakePHP-2.0、どのように私はユーザープロファイルの画像をアップロードできますか?
- 6. Wordpress - どのように私は2つの画像をマージできますか?
- 7. AngularJSはどのように画像を表示しますか?
- 8. は、どのように私は私のキャンバスの画像
- 9. phpどのように私は外部のウェブサイトから画像をダウンロードし、私のウェブサイトに保存することができますか?
- 10. Ruby on Railsプロジェクトディレクトリの外にあるパスの画像を、どのように表示できますか?
- 11. 画像がルートディレクトリからPHPで表示されない
- 12. どのように画像の配列を表示できますか?
- 13. どのように私はPHPのパワーポイントライブラリを使用して複数の画像を追加できますか?
- 14. 私はどのように私のウェブサイトの画像をFacebookで共有することができますか?
- 15. ノードとExpress.jsのWebアプリケーションのための私のルートディレクトリにExpress.js
- 16. 編集不可能なJTextFieldの中に画像を表示するには?私はこのように表示されるように、編集することはできませんJTextFieldの内部ロック画像を入れたい私のJava Swingアプリケーションで
- 17. 外部のドライブからアプリケーションのルートディレクトリにある画像パスを設定する
- 18. の表示画像は、私はちょうどGAE上に画像を表示アウトテストしていたデータストア
- 19. PersonをPHPでどのように表示できますか?
- 20. どのように私はちょうど画面上のカレンダーを表示することができます
- 21. 私は画像のようなナビゲーションを表示したい
- 22. 私は私の画像を表示するには、このコードを使用してきたPHP
- 23. 、どのように私は、これは私のPHPのWebサービスである
- 24. どのように私はアンドロイドの異なる画面サイズに同じ画像を使用できますか?
- 25. どのように私はサブメニューhorizantalを表示できますか?
- 26. 私はどのように私の結果をJSPでデータベースに表示できますか?
- 27. ユーザーはどのようにWebアプリケーションにログインできますか?
- 28. どのように私は、画像にアクセスできるHTMLファイルにsymfonyのテンプレート
- 29. はどのように私は3画像のレイアウトに
- 30. がどのように私は完全なdiv要素に画像を表示しようとする
のようなスペースを避けるために便利になる[馴染み見える。](https://stackoverflow.com/質問/ 13357994 /サーバーのルートディレクトリの前にある#アクセス-13358201)のファイルへのアクセス – showdev
可能ですが、それは同じ答えではありません。 – Legionar