如何在我的 php 应用程序中显示 web 根目录之外的图像? [英] How can i show the images outside the web root directory in my php application?

查看:29
本文介绍了如何在我的 php 应用程序中显示 web 根目录之外的图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 PHP 中使用 apache 服务器,linux 有 Web 应用程序.出于某些安全原因,我将文档和图像保留在 Web 根目录之外.当用户登录时,我如何显示这些图像.

I have web application in PHP using apache server, linux. For some security reason i am keeping the documents and images outside web root. How can i show these images, when the user login.

推荐答案

PHP 默认已经可以访问 web 根目录之外的文件,除非受到 open_basedir 指令(或安全模式,但希望你不在那个笼子里).

PHP by default can already access files outside the web root, unless restricted with an open_basedir directive (or safe mode, but hope you're not in that cage).

在 VirtualHost 配置中插入 open_basedir 限制通常是一个好习惯.你可以指定多个目录,在 Linux 上用 : 分隔,在 Windows 上用 ; 分隔.

It's normally a good practice to insert within a VirtualHost configuration an open_basedir restriction. You can specify multiple directories separated by : on Linux and ; on windows.

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

要访问这些文件,请使用绝对路径或相对于调用的 PHP 文件位置的路径.(因此,您必须../ 才能达到以上级别).

To access those files either use an absolute path or a path relative to the position of the PHP file called. (So you'll have to ../ to reach levels above).

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

Also be sure that directories in which you want to write to are assigned to the webserver user and have write permission.

否则你有第二个选择:

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

Inside your www directory, create a "image.php" file, with a similar content to:

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

并调用您的图像

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

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

Please be aware that your PHP file shouldn't be that simple :) As you may want to address multiple image formats (and providing the correct header for them), checking for malicious file path/inclusions (you don't want to use $_GET without validating/sanitizing the input), extra caching etc. etc. etc.

但这应该能让您了解如何定位您的问题.

But this should give you an idea on how you can target your issue.

这篇关于如何在我的 php 应用程序中显示 web 根目录之外的图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆