2011-06-17 42 views
0

我的项目结构就像下面---Zend框架项目图像设置虚拟主机后不可见

  • /

    • 公共

      • 。 htaccess
      • index.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> 

感谢 Ruzdi

回答

4

为公共文件夹内的data文件夹创建一个符号链接(因为这是您公开访问的文档根目录。

运行以下命令:

CD /无功/网络/ toletbd /公​​共 LN -nfs在/ var/WWW/toletbd /数据/图像的图像

确认,上述data/images文件夹可以被“apache”用户访问,否则你会得到一个权限被拒绝的错误。现在

,你可以使用它是这样的:

<img src="/images..."> 
+0

是否有任何不同的方式来访问它使用一些Apache配置。 – user802697 2011-06-17 05:49:33

+0

@ user802697我怀疑你可以这样做。但是,是的,你可以,这将需要另一个.php文件来显示你的图像 - [图像显示](http://www.wallpaperama.com/forums/how-to-display-pictures-or-image-with-php -file-script-showing-how-to-link-photo-with-php-file -t1344.html) – 2011-06-17 09:14:15

+0

@ user802697:如果你不想在文件系统上使用链接,可以使用apache中的Alias命令将一些url关联到一个物理目录(可以在webroot之外)alias/myuploaded/var/www/toletbd/data/uploads – regilero 2011-06-17 14:35:16

1

,即提供存储在Web根目录以外的文件夹中的图像,你可以用getAction()方法创建一个ImageController说:

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

当然,您需要添加一条路线,将这些图像网址映射到此控制器/操作。

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