我有使用Apache服务器Linux的PHP Web应用程序。出于安全原因,我将文档和图像保留在Web根目录之外。用户登录后,如何显示这些图像。
默认情况下,PHP可以访问Web根目录之外的文件,除非受open_basedir
指令限制(或安全模式,但希望您不在此笼中)。
在VirtualHost配置中插入open_basedir
限制通常是个好习惯。您可以指定多个目录,:
在Linux和;
Windows 上用分隔。
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,而不验证/清除输入),额外的缓存等,等等。
但这应该使您对如何解决问题有所了解。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句