это действительно глупо, но я пробовал десятки разных вещей, и я не могу, чтобы жизнь меня определяла то, что я делаю неправильно.
У меня есть установка 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-адресов и т. Д., Но это только усложняет ситуацию.