如何在我的PHP应用程序中显示Web根目录以外的图像?

我有PHP使用Apache服务器,Linux的Web应用程序。 出于某种安全原因,我将文档和图像保存在Web根目录之外。 如何在用户login时显示这些图像。

Solutions Collecting From Web of "如何在我的PHP应用程序中显示Web根目录以外的图像?"

除非受到open_basedir指令(或安全模式,但希望你不在该笼子里)限制,PHP默认情况下可以访问web根目录之外的文件。

在VirtualHost配置中插入open_basedir限制通常是一个好习惯。 您可以指定多个目录分隔:在Linux和; 在窗户上。

 php_admin_value open_basedir /var/www/s/stage:/usr/share/php:/your/dir 

要访问这些文件,可以使用绝对路径或相对于调用的PHP文件位置的路径。 (所以你必须../达到以上的水平)。

还要确保您要写入的目录已分配给Web服务器用户并具有写入权限。

否则,你有第二个选择:

在您的www目录中,创建一个“image.php”文件,其内容类似于:

 <?php header('Content-Type: image/png'); readfile("../img/" . $_GET['img']); ?> 

并用你的图片

 <img src="image.php?img=myimage.png" /> 

请注意,您的PHP文件不应该那么简单:)因为您可能想要解决多个图像格式(并为它们提供正确的标题),检查恶意文件路径/包含(您不想使用$ _GET没有验证/消毒输入),额外的缓存等等等等

但是这应该给你一个关于你如何针对你的问题的想法。

如此简单,这将输出正确的标题图像,
请记住,在清除输出缓冲区之前,必须设置header()
=>没有回应或打印之前

 $ file ='../../somedirectory/image.jpg';
报头( '内容类型:image / JPEG');
 header('Content-Length:'.filesize($ file));
 echo file_get_contents($ file);