使用PHP提供私有图片服务

4
我正在尝试使用php文件提供一些隐藏的图片(不在public_html文件夹中)。由于某种原因,我得到了一个损坏的链接图像,而我真的不知道我做错了什么(可能是一些非常愚蠢的错误)。为了简单起见,我将图像文件存储在与其他文件相同的级别上(因为它仍然给我一个损坏的链接)。我将php文件存储在根目录中,并在我的php页面上调用它。
<img src="LoadImg.php"/>

然后,LoadImg.php非常简单:
<?php

header("Content-type: image/jpeg");
$img='image.jpg';
readfile($img);

?>

谢谢您!

1
相对于PHP文件,图像路径是什么? - Jay Blanchard
1
抱歉,我之前说过它是一个子文件夹,但现在(为了测试目的)我只是将其存储在与其他文件相同的级别上。 - bbbb
1
如果您直接在Web浏览器中访问LoagImg.php,会看到什么?如果存在任何错误或警告消息(即使只是数据开头多了一个额外的换行符),则img标签将显示一个“损坏”的图标。 - kainaw
1
在你的 PHP 标签后面添加错误报告,例如 <?php error_reporting(E_ALL); ini_set('display_errors', 1);,然后再编写你的代码,这样能帮助你查看是否存在错误。 - Funk Forty Niner
2个回答

4

请提供 $img 的完整路径,即:

<?php
header("Content-type: image/jpeg");
$img='/home/site/hiddenfolder/image.jpg';
readfile($img);

或者,您可以提供相对路径。
假设hiddenfolderLoadImg.php在同一个目录下,您可以使用以下方式:

<?php
header("Content-type: image/jpeg");
$img='hiddenfolder/image.jpg';
readfile($img);

我正在使用相对路径(为了测试目的,现在将img存储在与php文件相同的文件夹中)。仍然出现损坏的链接... - bbbb
请使用完整路径示例。同时确保$img可读取。 - Pedro Lobito

0

对于Apache,请将以下内容添加到httpd.conf文件中

<Directory "/var/www/html/img">
    AllowOverride None
    order deny,allow
    Options FollowSymLinks
</Directory>

<Directory "/var/www/html/img"> AllowOverride None order deny,allow Options FollowSymLinks </Directory><目录“/var/www/html/img”> 允许覆盖无 顺序拒绝,允许 选项FollowSymLinks </目录> - jpaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接