У меня есть .png, который я хочу встроить на определенную страницу. Этот .png находится за пределами веб-корня, но у нас есть модуль в нашей системе, который позволяет пользователям просматривать это изображение на отдельной странице. Я обнаружил, что я могу использовать iframe для просмотра .png в некоторых браузерах, но иногда возникает проблема авторизации или при попытке распечатать страницу изображение не загружается через iframe. Я пробовал PHP readfile (), но потом у меня просто другая проблема с авторизацией. Я считаю, что проблема авторизации нечетна, так как нужно войти в систему, чтобы использовать наш сайт вообще. Каким будет лучший способ вставить этот образ?
<?php foreach($activity->getMedias() as $media_count => $media): <iframe id="content" src="http://www.mysite.com/media/view/id/<?php echo $media->getId(); ?>" frameborder="0" style="width: 100%; height:825px;" seamless="seamless"> <p>Your browser does not support iframes. Please upgrade to <a href="http://getfirefox.com">a modern browser</a>.</p> </iframe>
SOLVED Это код, который я использовал, чтобы заставить его работать. Я использую Symfony 1.4.
<?php foreach($activity->getMedias() as $media_count => $media): $dataString=sfConfig::get('sf_root_dir').'/media/'.$media->getLocation(); ?> <img SRC="data:image/png;base64,<?php echo base64_encode(file_get_contents("../../../../../..".$dataString));?>">
Похоже, вы пытаетесь передать URL-адрес для чтения файла, например
readfile('http://example.com/foo/bar');
Это заставляет PHP запускать полномасштабный HTTP-запрос обратно к себе. Вам необходимо использовать локальный путь к файловой системе, например
readfile('/path/outside/doc/root/to/the/image.png');
Это чисто локальная файловая система и вообще не включает в себя уровень HTTP, минуя весь бизнес аутентификации root / http.