Php 如何使用htaccess文件从文件夹中读取图像

Php 如何使用htaccess文件从文件夹中读取图像,php,apache,.htaccess,Php,Apache,.htaccess,我正在使用readfile函数读取图像文件。它在大多数情况下都有效,除非图像位于具有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

我正在使用readfile函数读取图像文件。它在大多数情况下都有效,除非图像位于具有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位于目录中,如下所示:

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应用程序需要它才能工作。

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

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

RewriteCond%{REMOTE\u ADDR}=“127.0.0.1”

在其他人跳过远程地址之前,将远程地址用作新的重写条件。
因为您的exec代码是本地的,所以它也将来自127.0.0.1,应该仔细阅读。

更可能的是,您的图像具有apache的读取权限,但没有PHP作为运行者的读取权限


尝试将映像的权限设置为0644。

,因为这也不起作用。我也试过了,我得到的只是网络浏览器中的目录路径,而不是实际的图像。然后,其他一些东西出了问题。你确定图像没有损坏吗?是的。我可以在Paint、Mozilla、Gimp和Photoshop中打开图像。没关系。为什么这开始起作用?我的文件权限提示真的回答了你的问题吗?.htaccess与文件无关。重写代码以使用文件名而不是URL,然后在此处提供代码和结果。以及整个故事的背景。你不想用这种方式显示多个图像吗?伙计,
http://127.0.0.1/WebProjects/project1/
不是目录。它是统一资源定位器。当你的文件放在目录里的时候。为什么要投否决票?!没有有效的权限将导致非常类似的情况。