我正在使用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位于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 :(得分:3)
为什么不直接从文件系统读取文件而不是通过Web服务器?
readfile("/srv/WebProjects/project1/data/media/images/original/7.jpg");
答案 1 :(得分:0)
更有可能的是,您的图像具有对apache的读取权限,但对于运行PHP的人没有读取权限。
尝试将图像的权限设置为0644。
答案 2 :(得分:-1)
RewriteCond %{REMOTE_ADDR}="127.0.0.1"
在其他人之前使用REMOTE_ADDR作为新的RewriteCond来跳过它们。 由于你的exec代码是本地的,它也将来自127.0.0.1,应该整齐地进行。