2010-09-03 127 views
0

我正在使用readfile函数来读取图像文件。它在大多数情况下工作,除非图像位于具有htaccess文件的目录中。如何使用htaccess文件从文件夹中读取图像

下面是一个例子:

header("Content-type: image/jpeg"); 
ob_clean(); // clean output buffer 
flush(); // flush output buffer 
readfile("http://127.0.0.1/WebProjects/project1/data/media/images/original/7.jpg"); 
exit; 

htaccess的位于http://127.0.0.1/WebProjects/project1/目录,如下所示:

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L] 

任何方式如何解决这个问题? htaccess文件必须存在,因为该文件夹中的Web应用程序需要它工作。

+0

.htaccess与**文件**无关。重写代码以使用文件名而不是URL,然后在此处提供代码和结果。以及整个故事背景。你不试图以这种方式显示多个图像吗? – 2010-09-03 07:06:09

+0

Man,'http:// 127.0.0.1/WebProjects/project1/**不是目录**。它是**统一资源定位器**。而你的**文件**发生在目录中。 – 2010-09-03 07:10:59

回答

3

为什么不直接从文件系统读取文件而不是通过网络服务器?

readfile("/srv/WebProjects/project1/data/media/images/original/7.jpg"); 
+0

因为那也行不通。我也尝试过,我所得到的只是在浏览器中回显目录路径,而不是实际的图像。 – 2010-09-03 06:58:00

+0

然后还有其他的错误。你确定图像没有损坏吗? – 2010-09-03 07:00:50

+0

是的。我可以在Paint,Mozilla,Gimp,Photoshop中打开图像。没关系。 – 2010-09-03 07:03:08

-1

RewriteCond %{REMOTE_ADDR}="127.0.0.1"

使用REMOTE_ADDR为别人面前一个新的RewriteCond跳过他们。 由于你的执行代码是本地的,它也将来自127.0.0.1,应该经过整齐。

0

更有可能的是,您的图像具有读取Apache的权限,但PHP运行的任何人都没有读取权限。

尝试将图像的权限设置为0644.

+0

为什么倒票?没有有效的权限会导致非常相似的情况。 – 2010-09-03 16:50:01