Эта тема на forum.dklab.ru


Gremlin: Джпеги через PHP =)
Warning: fopen(http://www.url.ru/images/foto/normal/1a.jpg): failed to open stream: HTTP request failed! °Фїї in /addres_of_the_script/open_image.php on line 11

код open_image.php


<?php
if(isset($inst))
{
include("all.php");
$conn = db_conn();
$look_number = mysql_query("select * from installations where id=$inst");
$name_of = mysql_fetch_row($look_number)
}
$file_to_show = $name_of[1];
header ("Content-type: image/jpeg");
$im = fopen($file_to_show,"rb");
if(@$im)
{
while (!feof($im))
{
$file_is = fgets($im);
echo $file_is;
}
//fclose($im);
}
else
echo "Ошибка, не могу загрузить картинку";
?>


Почему вдруг такая строка, когда все это в интернете висит? А на локальном сервере все работает....

Вот и не могу понять, то ли лыжи не ходят то ли...
Евгений Бондарев:
If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen
Это в мане такое пишут. (http://www.php.net/fopen)

Если картинки с вашего сервера - тогда открывайте их, указывая полный путь от корня сервера. типа: $_SERVER['DOCUMENT_ROOT']."/images/foto/normal/1a.jpg"
Евгений Бондарев:
Перенесено из форума: Прочее.
Перенесено в форум: Программирование::PHP::Все в кучу.
Gremlin:
Евгений Бондарев:
понятно, это если на своем сервере, но дело в том, что я беру картинки из интернета и
(http://www.url.ru/images/foto/normal/1a.jpg
это адрес из сети а не с сервера, на котором лежит скрипт...
Gremlin:
=(почему он открывается, когда я напрямую ввожу адрес через строку запроса, а через скрипт как начинаю выводить, так он сразу говорит, что либо такого файла нет, либо говорит, что ошибся в хттп запросе?????=(
Дмитрий Котеров:
failed to open stream: HTTP request failed! °Фїї in /addres_of_the_script/open_image.php
Что там за мусор на конце с буквой «ф»?
Gremlin:
я сам не могу понять... пытаюсь его прочитать, а он никак....ни в какой кодировке посмотреть не получается.... может еще как-нибудь можно?
Дмитрий Эсс:
Gremlin:
Посмотрите, что у Вас в $file_to_show. Может там какие-нибуть проблемы с кодировкой? Попробуйте насильно её изменить через iconv.
Gremlin:
Дмитрий Эсс:
а какая разница для картинки, в какой кодировке я ее подаю? Это же просто картинка? Или я не прав?
Да и потом какие могут быть проблемы с кодировкой, если в $file_to_show
http://www.url.ru/images/foto/normal/1a.jpg
???
Или все-таки это имеет значение?
bæv:
Да и потом какие могут быть проблемы с кодировкой...

Мало ли -- может, у Вас буква "а" (в строчке "1а.jpg") русская.
Дмитрий Эсс:
Gremlin:
Я имел ввиду кодировку пути к файлу в $file_to_show, который Вы базы тяните. Я с таким никогда не сталкивался, поэтому и говорю все возможные причины, которые приходит в голову. Насторожили каракули в тексте ошибки, вместо них должна выдаваться первая строка ответа сервера, например, "HTTP/1.1 404 Not Found". Вы пробовали задавать переменной $file_to_show значение напрямую в скрипте? Так работает?
Gremlin:
Мало ли -- может, у Вас буква "а" (в строчке "1а.jpg") русская.
Это могло бы быть возможным, если у меня клавиатура автоматически, не спрашивая моего разрешения, меняет раскладку...=)

Дмитрий Эсс:
Нет, не работает, работает, только если впрямую обращаешся к ссылке вводя ее через html-ссылку(img или <a href>)
Причем, в работающем случае, никаких проблем с кодировкой, ввожу тоже самое, что и в скрипте, все работает...а в скрипте нет... даже если напряму присвоить...

Причем я уже задавал вопрос по этому поводу, тогда она заработала, проработала день, а потом вдруг резко опять перестала и больше никак не хочет никаким образом.... выдает только вот такую вот строку
Warning: fopen(http://www.url.ru/images/foto/normal/1a.jpg): failed to open stream: HTTP request failed! °Фїї in /addres_of_the_script/open_image.php on line 11
Может, это просто запрет на том сервере, где это лежит? Типа запрет на обращения скрипта к этим файлам... Хотя я пока слабо представляю, как можно запретить обращаться к картинке...
Дмитрий Эсс:
Gremlin:
А как обстоят дела с этим http://ee.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen ?
Gremlin:
Все включено(если вы об allow_url_fopen а остальные я че-то не нашел =))) )

allow_url_fopen On - default value, On - Master value - вот значения у хостера....()
Евгений Галашин:
1. от хостера сделайте пинг сервера, откуда надо качать картинки.
2. посмотрите, отдаёт ли сервер картинку всем желающим (например, попробуёте её wget'ом загрузить).
Gremlin:
Евгений Галашин:
1. А смысл, что это даст? и как это сделать? =)
2. Годзила, че-то не смог ее загрузить, хотя долго пытался...
в итоге выдал 416 ошибку Requested Range Not Satisfiable
Gremlin:
хотя сегодня годзилла все закачал...
7.3.:
Warning: fopen(http://www.url.ru/images/foto/normal/1a.jpg): failed to open stream: HTTP request failed! °Фїї in /addres_of_the_script/open_image.php on line 11
У меня была похожая проблема, когда читаешь файл построчно с помощью file(), где каждая строчка - какой-либо url, причем, на конце стоит перевод строки \n, который внешне не заметен, а при использовании этого url он не открывается. Не знаю, бывает ли такое с базами данных.
Евгений Галашин:
гозилла может формировать referrer... хотя хто ее знает...
на Ваш компьютер СКРИПТ картинку загружает из интернета? если да - то вопрос к хостеру.
Дмитрий Эсс:
7.3.:
rtrim() делали?
7.3.:
Дмитрий Эсс:
Ну, почти.
Gremlin:
7.3.:
И как же вы ее решили?
7.3.:
Gremlin:
$line = ereg_replace("\r?\n","",$line);
8)

Я не пойму причем здесь мой проблема, которую я решил еще полгода назад. Вроде бы в базах данных такого не бывает, я просто привел пример, что могут быть невидимые символы в url.
Gremlin:
мало ли... лишние знания никогда не помешают...=)

Эта тема на forum.dklab.ru