Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Объясните мне тупому...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.041 c
2-1168028135
Влад
2007-01-05 23:15
2007.01.21
Текущее время


15-1167383931
Ega23
2006-12-29 12:18
2007.01.21
C НАСТУПАЮЩИМ, КОЛЛЕГИ!!!


2-1167218022
term1t
2006-12-27 14:13
2007.01.21
ADO + MS VFP


2-1167402196
AlexanderMS
2006-12-29 17:23
2007.01.21
Функция формирования римских цифр из арабских.


15-1166814079
Cerberus
2006-12-22 22:01
2007.01.21
Заканчивается год.