0

私のプロジェクト構造は次のようなものです ---

  • /

    • 公衆

      • .htaccess
      • index.php
      • テンプレート ...........
    • データ

      • アップロード (このアプリケーションによってアップロードされたすべての画像)
      • ………………

これらのように

このプロジェクトの仮想ホストを設定する前はすべて正常に機能していますが、設定後はアップロードされた画像をどこにも見ることができません。

次の理由で起こっている可能性があります

  • 私の仮想ホストはパブリックディレクトリを指していますが、アップロードされた画像はアップロードディレクトリの下にあります。
  • 私の質問は、アップロードディレクトリをパブリックディレクトリに変更せずに、どうすれば画像を表示できるかということです

Followin は私の .htaccess ファイルです ----------

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Apacheファイルのホスト設定は次のとおりです---------

<VirtualHost 192.168.0.3:80>
   DocumentRoot "/var/www/toletbd/public"
   ServerName hometolet.local

   # This should be omitted in the production environment
   SetEnv APPLICATION_ENV development

   <Directory "/var/www/toletbd/public">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>

</VirtualHost>

ありがとうルズディ

4

2 に答える 2

3

dataパブリック フォルダー内のフォルダーのシンボリック リンクを作成します (これは、パブリックにアクセスできるドキュメント ルートであるためです。

次のコマンドを実行します。

cd /var/www/toletbd/public ln -nfs /var/www/toletbd/data/images イメージ

上記のdata/imagesフォルダーに「apache」ユーザーがアクセスできることを確認してください。そうしないと、アクセス許可拒否エラーが発生します。

これで、次のように使用できます。

<img src="/images...">
于 2011-06-17T05:21:15.573 に答える
1

ImageControllerWeb ルート外のフォルダーに保存されている画像を配信するには、次のgetAction()メソッドを使用して を作成できます。

  1. フォルダ内の画像を探します
  2. 応答に適切な MIME タイプ ヘッダーを設定します
  3. を実行しreadfile()てコンテンツを配信します。

もちろん、これらの画像 URL をこのコントローラー/アクションにマップするルートを追加する必要があります。

@Sahalのシンボリックリンクのアイデアは、本質的に単なる静的コンテンツを配信するために別の完全なディスパッチサイクルを必要としないため、おそらく優れています。ただし、ホスティングでシンボリックリンクが許可されていない場合、これは回避策として役立つ可能性がありますが、明らかにパフォーマンスは低下します。

于 2011-06-17T06:37:11.237 に答える