0

我的项目结构如下---

  • /

    • 上市

      • .htaccess
      • 索引.php
      • 模板 ...........
    • 数据

      • 上传(此应用程序上传的所有图像)
      • .....................

像这些

在为这个项目设置虚拟主机之前,一切都运行良好,但设置后我无法在任何地方看到上传的图像。

我可能会因为以下原因而发生

  • 我的虚拟主机指向公共目录,但上传的图像在上传目录下。
  • 我的问题是,如果不将上传目录更改为公共目录,我怎么能显示我的图像

以下是我的 .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

要交付存储在 Web 根目录之外的文件夹中的图像,您可以使用以下方法创建ImageController一个getAction()

  1. 在文件夹中查找图像
  2. 在响应中设置适当的 mime 类型标头
  3. 执行 areadfile()以传递内容。

当然,您需要添加一个将这些图像 url 映射到此控制器/操作的路由。

@Sahal 的符号链接想法可能更好,因为它不需要另一个完整的调度周期来交付本质上只是静态内容的内容。但是,如果您的主机以某种方式不允许您进行符号链接,那么这可以作为一种解决方法,尽管公认的性能较差。

于 2011-06-17T06:37:11.237 回答