Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.044 c
2-1167718710
kernel
2007-01-02 09:18
2007.01.21
Реакция на изменение раскладки клавиатуры


15-1167241312
Ringo
2006-12-27 20:41
2007.01.21
Москва остановилась.


3-1162193140
zero-g
2006-10-30 10:25
2007.01.21
Работа с ADO


15-1167304162
Megabyte
2006-12-28 14:09
2007.01.21
Связь с сервером FB с помощью PHP удаленно


11-1144047866
Vadim Petrov
2006-04-03 11:04
2007.01.21
Навести порядок в компонентах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский