Php 从web根目录外部显示图像(public_html)

Php 从web根目录外部显示图像(public_html),php,html,image,Php,Html,Image,背景: 我有一个文件夹,其中包含名为uploads的图像或位于网站根目录之外的图像。(公共_html之外) 我正在尝试打印里面的图像,比如image.php 操作规则: 我正在尝试在.htaccess中不使用别名mod_rewrite来完成此操作 在中间没有显示黑色背景和图像(我不希望在浏览域名.COM/MIG.PNG < /代码>时,就像下面提到的图片的例子。 不使用其他页面,并将其作为get传递 我的尝试: 我检查了很多问题,其中一个是,另一个是 根据上面提出的当前问题和其他

背景:

  • 我有一个文件夹,其中包含名为uploads的图像或位于网站根目录之外的图像。(公共_html之外)
  • 我正在尝试打印里面的图像,比如image.php

操作规则:

  • 我正在尝试在.htaccess中不使用别名mod_rewrite来完成此操作
  • 在中间没有显示黑色背景和图像(我不希望在浏览<代码>域名.COM/MIG.PNG < /代码>时,就像下面提到的图片的例子。
  • 不使用其他页面,并将其作为get传递

我的尝试:

  • 我检查了很多问题,其中一个是,另一个是
  • 根据上面提出的当前问题和其他教程,我提出了 这:

    
    "/>
    
它工作正常,下面是一个示例:


然而,这不是我正在寻找的,也不是我试图做的。同样,我试图将其视为一个普通的图像src,因为它将用于配置文件图片或其他用途

任何帮助都将不胜感激。提前感谢!

此:

echo file_get_contents($image);
?>

<img src=" <? echo $image; ?> "/>
echo文件获取内容($image);
?>
"/>
错误的原因有几个。首先,您不能以这种方式将原始图像内容与HTML标记混合使用。另外,
src
指定图像的URL,而不是原始内容


您可以将echo
file\u get\u contents($image);
和相关代码移动到单独的文件中,即
image.php
,然后在
src
中引用它,并将图像名称作为参数传递(即
image.php?img=foo.jpg
)-请注意,如果您做得不对,您将对其开放)。或者,您可以尝试使用as
src
参数,并以这种方式直接传递原始内容

将image.php更改为

<?php
function image() {
$location = dirname($_SERVER['DOCUMENT_ROOT']);
$image    = $location . '/public_html/images/banned.png';

return base64_encode(file_get_contents($image));
}
?>

在另一个要显示该图像的文件中,假设test.php:

<?php
include("image.php");
?>
<img src='data:image/png;base64,<?= image(); ?>' >

' >

我认为问题在于您发送的内容类型,您是否尝试删除它?我尝试删除它,但它显示十六进制代码,如“�PNG IHDR“当我尝试bin2hex时,页面显示一个空白页面。
�PNG
是一个PNG文件,您正在使用
内容类型:image/jpeg
@Fred ii-是的,我从我编码的文件中将其更改为image/PNG,但忘了从这里更改,对不起。这让问题现在变得不清楚了,
$file
,它的值是多少?除非你的意思是
$image
<?php
include("image.php");
?>
<img src='data:image/png;base64,<?= image(); ?>' >