Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизОбъясните мне тупому... Найти похожие ветки
← →
ProgRAMmer Dimonych © (2007-01-02 01:04) [0]Имеется сайт. В папке, отведённой на сервере хостинг-провайдера под этот сайт имеются вложенные папки (например, 2005, 2006, LastFestival). Во вложенных папках находятся:
1. Файл Images.txt (текстовые пояснения к картинкам).
2. Собственно графика (файлы формата jpg, ссылки на которые находятся в файле Images.txt).
Кроме того, собственно в "корневой" папке сайта имеется php-скрипт, который отображает документ в соответствии с содержимым файла Images.txt из одной из вложенных папок. Когда отлаживаю у себя на компьютере в Денвере - всё работает. Выкладываю на сервер - скрипт зацикливается. Удалось выяснить, что цикл
while (!feof($ImagesTxtFile))
{
fgets(...);
fgets(...);
}
выполняется до бесконечности из-за того. Скорее всего, из-за того, чо файл Images.txt не найден (хотя соответствующие пути в скрипте, естественно прописаны, иначе бы скрипт не работал даже у меня на компе).
В чём может заключаться причина такой проблемы.
Заранее спс.
← →
Pavia © (2007-01-02 01:26) [1]Не иправельно прописан путь. Файлы и папки на сервере должен быть из меленьких букв. А в виндоусе это не так.
Замени название файла images.txt тогда работать будет, скорее всего.
← →
ProgRAMmer Dimonych © (2007-01-02 01:32) [2]> Pavia © (02.01.07 01:26) [1]
Спасибо за подсказку... К сожалению, я забыл уточнить: на сервере ОС семейства UNIX... Насколько причина, связанная с размером букв, будет справедливой в этом случае?
← →
Vga © (2007-01-02 04:52) [3]> [2] ProgRAMmer Dimonych © (02.01.07 01:32)
UNIX различает регистр в именах файлов. Images.txt, IMAGES.txt, images.txt, Images.TXT - разные файлы.
← →
Anatoly Podgoretsky © (2007-01-02 10:03) [4]> Vga (02.01.2007 04:52:03) [3]
У них так, Dimonych, dimonych, DIMONYCH - это разные люди
← →
ProgRAMmer Dimonych © (2007-01-02 12:49) [5]Попереименовывал все файлы в одной из папок в нижний регистр. Отредактировал код, вызывающий скрипт для отображения картинки. Теперь зависания нет, но картинки отображаются с крестиком, т.е. как ненайденные. Это может быть связано с тем, что скрипт даже для отдельной картинки выполняется достаточно долго (скрипт отображения картинки плющит её до размера 100x100)? или с тем, что параметры, передаваемые скрипту отображения картинки: "FN" и "FilePath"?
← →
ProgRAMmer Dimonych © (2007-01-02 13:34) [6]Получилось заставить показывать картинки, но...
Картинки все jpg. Почему-то отображается только где-то 1/3. Некоторые стали просто чёрными квадратами 100x100 (Малевичу такое и не снилось :(), остальные по-прежнему видны только по замещающему тексту с крестиком :(
← →
Zeqfreed © (2007-01-02 14:49) [7]Даешь код. Почему все должны телепатией заниматься?
Даешь формат файла images.txt. Даешь код вывода картинок. Ждешь ответов :)
← →
Real © (2007-01-02 14:49) [8]пора по-моему код в студию или ссылки на последние версии телепаторов :) Насчет черного квадрата - это криво работающая GD. Попробуй использовать вместо ImageCreateTrueColor, упрощенную версию ImageCreate (или наоборот, смотря какая в скрипте исходная)
← →
Zeqfreed © (2007-01-02 14:54) [9]> Real © (02.01.07 14:49) [8]
> Насчет черного квадрата - это криво работающая GD.
Или криво написанный код ;)
← →
ProgRAMmer Dimonych © (2007-01-02 15:54) [10]Формат images.txt прост...
<Имя файла JPEG 1>
<Текстовое пояснение к картинке 1>
<Имя файла JPEG 2>
<Текстовое пояснение к картинке 2>
. . . . . . . . . . . . . . . . . . . . . . . . . . .
<Имя файла JPEG N>
<Текстовое пояснение к картинке N>
← →
ProgRAMmer Dimonych © (2007-01-02 15:55) [11]Код скрипта (встроен в HTML-документ, обозван *.php)...
<?
$ImgList=fopen("pohod/images.txt","r");
while (!feof($ImgList))
{
$FileName=fgets($ImgList);
$Desc=fgets($ImgList);
$Desc=Str_Replace("\n","",$Desc);
$Desc=Str_Replace("\r","",$Desc);
$FileName=Str_Replace("\n","",$FileName);
$FileName=Str_Replace("\r","",$FileName);
echo("<A HREF=\"pohod/".$FileName."\"><B CLASS=\"RedLink\"><IMG SRC=\"OutPic.php?FN=".$FileName."&FilePath=pohod/\" ALT=\"".$Desc."\" BORDER=0></A>\n");
}
fclose($ImgList);
?>
← →
ProgRAMmer Dimonych © (2007-01-02 15:58) [12]Код вывода картинок (OutPic.php)...
<?
$LastDotPos=StrRPos($FN,".");
$Ext=StrToLower(SubStr($FN,$LastDotPos+1,StrLen($FN)-$LastDotPos));
if ($Ext==="jpg") {$SrcImg=ImageCreateFromJpeg($FilePath.$FN);}
if ($Ext==="jpeg") {$SrcImg=ImageCreateFromJpeg($FilePath.$FN);}
if ($Ext==="gif") {$SrcImg=ImageCreateFromGIF($FilePath.$FN);}
if ($Ext==="png") {$SrcImg=ImageCreateFromJpeg($FilePath.$FN);}
$DestImg=ImageCreateTrueColor(100,100);
ImageCopyResampled($DestImg,$SrcImg,0,0,0,0,100,100,ImageSX($SrcImg),ImageSY($Sr cImg));
ImageDestroy($SrcImg);
if ($Ext==="jpg") {ImageJpeg($DestImg);}
if ($Ext==="jpeg") {ImageJpeg($DestImg);}
if ($Ext==="gif") {ImageGIF($DestImg);}
if ($Ext==="png") {ImageJpeg($DestImg);}
ImageDestroy($DestImg);
?>
Подозреваю, что с расширением файла можно было и попроще, но за отсутствием опыта использования php - пока так. Буду благодарен за подсказку...
У меня на компе работало. На сервере - отображается только часть картинок.
← →
ProgRAMmer Dimonych © (2007-01-02 16:00) [13]Ой, совсем забыл. Так, как в [12] - не работало (не отображалось ни одной картинки). На сервере сейчас лежит вариант, начинающийся с...
$FN=substr($_GET["FN"],0,1024);
$FN=HTMLSpecialChars(StripSlashes($FN));
$FilePath=substr($_GET["FilePath"],0,1024);
$FilePath=HTMLSpecialChars(StripSlashes($FilePath));
← →
Zeqfreed © (2007-01-02 16:25) [14]
> $Desc=Str_Replace("\n","",$Desc);
> $Desc=Str_Replace("\r","",$Desc);
> $FileName=Str_Replace("\n","",$FileName);
> $FileName=Str_Replace("\r","",$FileName);
Это, вроде, лишнее. fgets возвращает без разделителей. Тем более в unix-системах разделителем строк выступает только \n, тебе следует записывать файлы именно в таком формате, иначе fgets будет неправило считывать.
> echo("<A HREF=\"pohod/".$FileName."\"><B CLASS=\"RedLink\"><IMG
> SRC=\"OutPic.php?FN=".$FileName."&FilePath=pohod/\" ALT=\"".
> $Desc."\" BORDER=0></A>\n");
Кто будет url-кодировать Filename при передаче скрипту? Где закрывающий тег B? Зачем такое издевательство? :)
← →
Zeqfreed © (2007-01-02 16:31) [15]
> if ($Ext==="png") {$SrcImg=ImageCreateFromJpeg($FilePath.
> $FN);}
М-м?
> if ($Ext==="jpg") {ImageJpeg($DestImg);}
> if ($Ext==="jpeg") {ImageJpeg($DestImg);}
> if ($Ext==="gif") {ImageGIF($DestImg);}
> if ($Ext==="png") {ImageJpeg($DestImg);}
Выводить-то зачем в разных форматах? При ресемплинге в любом случае качество портится, при размерах 100х100 я думаю можно выводить все изображения в png. Ну или jpeg.
← →
Zeqfreed © (2007-01-02 16:33) [16]И ещё, опиши задачу по-русски. От и до. Чтобы было лучшее понимание того, что ты пытаешься сделать. Хотя и так понятно в общих чертах, конечно.
← →
Zeqfreed © (2007-01-02 16:34) [17]Какая кстати версия GD у тебя и на хостинге?
← →
ProgRAMmer Dimonych © (2007-01-02 16:42) [18]Так, по порядку...
> Это, вроде, лишнее. fgets возвращает без разделителей. Тем
> более в unix-системах разделителем строк выступает только
> \n, тебе следует записывать файлы именно в таком формате,
> иначе fgets будет неправило считывать.
У меня на компе возникали проблемы (строка в итоговом HTML-документе обрывалась, если не удалялись эти символы). Поэтому решил на всякий случай оставить.
> Кто будет url-кодировать Filename при передаче скрипту?
> Где закрывающий тег B? Зачем такое издевательство? :)
В каком смысле URL-кодировать? $FilePath и $FN после конкатенации (склейки, в смысле) должны образовать относительный путь. Закрывающий B - этого я, действительно, не заметил, спасибо.
> > if ($Ext==="png") {$SrcImg=ImageCreateFromJpeg($FilePath.$FN);}
> М-м?
Да, ещё одно последствие пользования "сопипастой" :) (CopyPaste"ом).
> Выводить-то зачем в разных форматах? При ресемплинге в любом
> случае качество портится, при размерах 100х100 я думаю можно
> выводить все изображения в png. Ну или jpeg.
Ну, это можно, конечно, сделать. Хотя пока что там и так только jpeg"и.
> Какая кстати версия GD у тебя и на хостинге?
GD2, судя по описанию.
← →
ProgRAMmer Dimonych © (2007-01-02 16:46) [19]Задача простая: имеется сайт, на котором размещена информация о нашем танцевальном клубе и об общественном объединении, в состав которого он входит. Кроме текстовой информации присутствуют фотографии и видеофрагменты (SWF) из походов, творческих экспедиций, летних лагерей, с концертов. Для того, чтобы не мучаться с предпросмотром фотографий и не создавать 100x100-варианты "вручную", используется GD. Информация о фотографиях читается из images.txt (см. выше). Вот, собственно, и всё.
← →
ProgRAMmer Dimonych © (2007-01-02 16:51) [20]По поводу GD...
У меня, как выяснилось из описания...
<Из описания>
* Денвер-2 2002-12-13:
- Исправлена ошибка перехвата выходного потока команд, когда имя
временной директории содержит пробелы. В общем-то, ошибка
практически ни на что не влияла, но все равно.
- В пути подключения include_path PHP добавлена директория ".".
- Проверка, запущен ли Apache, теперь производится не по наличию
активного 80 порта, а по файлу в /usr/local/apache/logs/httpd.pid.
Это может помочь на системах Windows XP, в которых порт 80
часто оказывается "занятым".
- Отказ от php_gd2 в пользу php_gd. Первая по непонятным причинам
не работает на некоторых системах. В результате уменьшился размер
дистрибутива.
</Из описания>
← →
Zeqfreed © (2007-01-02 16:54) [21]Если планируется посещаемость больше 2 человек в сутки, то необходимо кешировать хотя бы тумбнейлы (при посещаемости в несколько сот человек уже желательно кешировать сами страницы). Это раз :)
> В каком смысле URL-кодировать?
http://en.wikipedia.org/wiki/URL-encoding
http://www.php.net/manual/tw/function.urlencode.php
> У меня на компе возникали проблемы (строка в итоговом HTML-
> документе обрывалась, если не удалялись эти символы). Поэтому
> решил на всякий случай оставить.
Повторюсь: файл должен быть записан в unix-формате, т.е. разделителем строк должен быть символ \n. Иначе нефиг пользоваться стандартной ф-цией, она может вести себя непредсказуемо.
> GD2, судя по описанию.
Ну если 2, то jpeg должен поддерживаться. До версии 1.8 (начиная с какой-то там) он был исключен. Проверь в phpinfo(); на хостинге, чтобы быть уверенным.
← →
ProgRAMmer Dimonych © (2007-01-02 17:09) [22]Боюсь, в URL-кодировании нет необходимости, т.к. у меня всё аскетично: abcdefghijklmnopqrstuvwxyz0123456789./ и ни символа, кроме этих.
В файловом менеджере хостера при редактировании images.txt всё отображается нормально. Значит, по идее, должно работать. Да и в итоговом HTML-документе всё правильно прописывается, проверял. Так что с \n всё должно быть в порядке. А \r - пусть будет на случай перехода на хостинг с Windows :) Хотя меня и этот вполне устраивает. По крайней мере, пока...
phpinfo() я пробовал. Фигня, ничего не видно. Я вообще сообщений интерпретатора не могу видеть, когда сайт с сервера запускаю. Таковы уж там настройки :(
← →
Zeqfreed © (2007-01-02 17:14) [23]Тогда надо найти те строки, которые выводят неправильные результаты. И вывести все входные и выходные данные, которые касаются этих строк, для отладки.
← →
ProgRAMmer Dimonych © (2007-01-02 17:18) [24]> Тогда надо найти те строки, которые выводят неправильные
> результаты. И вывести все входные и выходные данные, которые
> касаются этих строк, для отладки.
В смысле, котрым соответствуют нерисующиеся картинки?
← →
Zeqfreed © (2007-01-02 17:23) [25]
> В смысле, котрым соответствуют нерисующиеся картинки?
Ну да :) Тебя же это не устраивает :)
← →
ProgRAMmer Dimonych © (2007-01-02 17:29) [26]Цитата из итогового HTML-документа:
<A HREF="pohod/pohod1996.jpg"><B CLASS="RedLink"><IMG SRC="OutPic.php?FN=pohod1996.jpg&FilePath=pohod/" ALT="Поход 1996 г." BORDER=0></A>
Все остальные выглядят абсолютно идентично, за исключением того, что там не pohod1996.jpg, а, например, zalesje2000pritopilirukovoditela.jpg.
← →
Zeqfreed © (2007-01-02 17:32) [27]1) Желательно все-таки использовать URL-кодирование, т.к. слеши должны быть кодированы.
2) Используй абсолютный путь к скрипту.
← →
ProgRAMmer Dimonych © (2007-01-02 17:36) [28]> 1) Желательно все-таки использовать URL-кодирование, т.к.
> слеши должны быть кодированы.
ОК, учту, насчёт слешей как-то не подумал.
> 2) Используй абсолютный путь к скрипту.
Скрипт же, вроде как, находится в той же папке, проблем с его вызовом не должно быть. И потом, картинки отображаются, но не все.
А вообще, я так понимаю, придётся службу поддержки трясти? <Лирическое отступление>Не хотелось как-то: вот уже три дня как хостер бухает :), т.е. ответа нет по вопросу другой направленности. Хотя раньше в течение от 30 минут до 12 часов ответ получал</Лирическое отступление>.
← →
Zeqfreed © (2007-01-02 17:49) [29]Если бы ты дал мне все скрипты и пару картинок которые не отображаются, я бы может погонял их у себя. Заняться щас все равно нечем :)
← →
ProgRAMmer Dimonych © (2007-01-02 18:12) [30]http://webfile.ru/1264142
1132 Кб. Три картинки. Из них
Pohod1996.jpg - не отображается
Zalesje1997EtapTurEstafetyPalatka.jpg - чёрный квадрат
Ptich1999MuzejDerevZodch.jpg - отображается нормально
P.S. Имена файлов на самом сервере, в отличие от моего компьютера, больших букв не содержат, т.к. переименование производилось уже после загрузки графики на сервер.
← →
Zeqfreed © (2007-01-02 18:20) [31]Ух, материться хочется! :)
Ладно, качаю с ненавистного вебфайл дот ру (и зачем, спрашивается, придумали гмейл дот ком?) ненавистный рар архив. Сейчас разберемся.
P.S. Пока писал уже скачалось.
← →
Zeqfreed © (2007-01-02 18:45) [32]В обшем, код ужасен, но работает :)
Попробуй сделать вывод картинок так:header("Content-type: image/jpeg");
ImageJpeg($DestImg);
← →
ProgRAMmer Dimonych © (2007-01-02 18:59) [33]> Zeqfreed © (02.01.07 18:45) [32]
Спасибо, попробую. О результатах сообщу.
← →
ProgRAMmer Dimonych © (2007-01-02 19:04) [34]Никаких изменений - те, которые отображались раньше - отображаются, остальные глючат.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.048 c