如何只允许 PHP 从我的服务器下载图片?

How to only allow PHP to download images from my server?

我有一个服务器,其中包含一个用于下载图像的简单 php 文件和一个包含这些图像的文件夹。

<?php

$filepath = "myFiles/" . $_POST["file"];
if (file_exists($filepath)) {
    $file = fopen($filepath,"r") or die();
    echo fread($file,filesize($filepath));
    fclose($file);
}

?>

这个 download.php 文件以及 myFiles 文件夹都位于 www/html/文件夹。

我正在尝试找到一种方法,以便我的 PHP 脚本可以访问我的图像文件,同时让这些文件远离普通访问者。我的问题是,如果我设置了无法通过浏览器查看文件的权限,那么 PHP 脚本也无法访问它们。所以要么两者都有访问权限,要么都没有。

我在正确的轨道上吗?我怎样才能使我可以使用 PHP 脚本下载我的图像,同时保持图像无法访问?

这不是您可以使用 linux 文件系统权限来处理的事情。您可以将文件的 linux 权限恢复到最初的状态。

相反,如果您有一个 /home 文件夹,我建议您将原始文件隐藏在那里。如果有的话,请与您的虚拟主机商联系。

否则,如果您必须绝对将所有内容都放在 www 中,则将文件隐藏在一个新的子文件夹中,例如“隐藏文件”,并在该文件夹中放入一个 .htaccess 文件以阻止浏览器直接访问这些文件。 .htaccess文件可以是一个单行文件,里面有Deny From All命令。

这样您的文件将只能通过 download.php 进行代理。