Чтение изображения извне public_html с помощью PHP?

это действительно глупо, но я пробовал десятки разных вещей, и я не могу, чтобы жизнь меня определяла то, что я делаю неправильно.

У меня есть установка cpanel с обычным каталогом public_html и доступ к каталогу ниже (вызовите этот каталог «USER»). Я тестирую некоторые вещи с изображениями.

Я поместил файл изображения над public_html в каталог USER.

Я написал тестовый скрипт php, который имеет всего несколько строк:

if(is_file("../1.jpg")){ echo "<img src=\"../1.jpg\" />"; }else{ echo "not there"; } 

Файл is_file всегда может найти файл. Также попытались file_exists и is_readable, все они тоже находят файл.

Но даже несмотря на то, что скрипт видит файл, я не могу решить, как вывести этот файл в браузер. Или даже если это можно сделать так.

Я изменил разрешения на файл на все доступные для чтения.

Я попытался установить абсолютный путь из корня.

Я пробовал использовать imagejpeg.

Ничего из этого не происходит.

Вы можете задаться вопросом, почему я не просто поместил изображение в public_html, но этот скрипт является тестом, который я выполняю. Мне нужно выяснить, что возможно, когда дело касается изображений изображений из других доменов / учетных записей на одном сервере ( это выделенный сервер).

Я могу понять, что, возможно, это вещь разрешений или что-то в этом случае, я не понимаю, почему скрипт может найти файл – ну, в любом случае, я, вероятно, пропускаю что-то очень глупое или простое. Поэтому, если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен.

Большое спасибо

Это невозможно. Когда вы выводите тег img, это просто какой-то текст на сервере. Он отправляется в браузер, и браузер пытается извлечь файл, указанный в разделе src="..." . Это делается с помощью HTTP-запроса, поэтому, если изображение находится за пределами корня документа, вы не можете по определению извлечь файл напрямую.

Если вы можете просто сделать src="../../../../picture.jpg" и получить изображение за пределами корня документа, вы можете получить ЛЮБОЙ файл на сервере, включая ваши файлы конфигурации, свой пароль файлы, бла-бла-бла. Это была бы дыра в безопасности, достаточно большая, чтобы квалифицироваться как безумная.

если вы хотите предоставить доступ к файлу вне корня документа, вам придется сделать это через скрипт. Самый простой способ – иметь:

image.php:

 <?php header('Content-type: image/jpeg'); readfile('/path/to/picture/outside/doc/root/file.jpg'); 

и в вашем html:

 <img src="image.php"> 

Существуют и другие более неприятные варианты, такие как использование директив alias alias для сопоставления внешних каталогов во «внутренние», переписывание URL-адресов и т. Д., Но это только усложняет ситуацию.