| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Помогите! Не могу найти баг! |
| Автор: Onis 11.2.2006, 19:48 | ||
| Собственно: http://onis.jino-net.ru/?show=amrod И так со всем галереями. Скрипт "хз по какому принципу" выбирает картинку и сует ее привьюхи вместо других фот. Через фтп смотрел, все фоты на месте а показывает только одну Но фишка в том что скрипт туп как "система ниппель". Просто читает директорию, заносит данные картинок в массив, сортирует его по дате и выводит их в виде привьюх. конечно срипт со временем усложнился (открытие первой картинки при входе в галерею, подсветка выбранной фоты и т.д.) А самое главное локально всё пашет!!!
В общем мне нужен вывод, это у меня проблемы или у хоста (просто все работало до поры до времени а потом БАЦ и не работает). Если у меня проблемы то очень прошу показать направление в котором нужно их искать. |
| Автор: sergejzr 11.2.2006, 20:11 |
| Модератор: Название темы должно отражать ее суть! |
| Автор: Kefir 11.2.2006, 20:53 |
| Гм... если ты думаешь что твой скрипт поймут все желающие и без твоей помощи - ошибаешься. Уважь нас, хотя бы общие комментарии проставь, а то разбираться в коде твоём не просто. |
| Автор: Kefir 11.2.2006, 21:09 | ||||||
"Так не бывает..." (с) Трус А вообще, очень хочется верить, что код будет к тому же и отформатирован нормально (я имею в виду табуляцию). По теме - ты уверен, что global $var получает значение $_GET['var']? Я вот не очень (= не знаю). Попробуй все POST/GET переменные получать именно из $_GET/$_POST. Добавлено @ 21:13
Только что проверил скриптом
Не работает при register_globals = Off. Так я и думал. Пользуйся superglobals - $_GET/$_POST (причём всегда!). На мой взгляд именно в этом и есть проблема. |
| Автор: Kefir 11.2.2006, 22:05 |
| По поводу register?globals было очень много написано на этом форуме - ищи поиском. Доки смотри http://www.php.net/register_globals. В кратце это так - если у тебя есть скрипт x.php и к нему обращаются так: x.php?name=Vasja - то Vasja бедут в переменной $_GET['name']. Причём всегда. Если в ПХП.ини написано register_globals = On, то Vasja будет ещё и в $name. На подавляющем большинстве хостингов эта опция отключена. |
| Автор: sergejzr 11.2.2006, 22:17 |
| Это не мешает описать суть в заголовке. То что не можете найти баг - это ваша проблема, а не её суть. Назвать можно было например "не считываются файлы из директории". Таковы правила форума! Добавлено @ 22:22 Вот ваши темы: http://forum.vingrad.ru/index.php?showtopic=82875&st=0&#entry639237 http://forum.vingrad.ru/index.php?showtopic=81532&st=0&#entry630479 http://forum.vingrad.ru/index.php?showtopic=72265&st=0&#entry573688 http://forum.vingrad.ru/index.php?showtopic=55998&st=0&#entry445592 А теперь поставьте себя на место модератора, который должен просматривать десятки тем и ориентируется по заголовкам. Затем попытайтесь определить, какой вопрос о чём. Вынужден вынести устное предупреждение. |
| Автор: Onis 11.2.2006, 23:01 | ||
| sergej.z, извините, больше не повторится. На счет моей проблемы. рабоать так-же перестала админка. http://onis.jino-net.ru/scripts/admin.php файл qwe.php этот скрипт я взял с вашего форума, он для регистрации и авторизации юзеров. вот строка на которую ругается.
хочу напомнить что два дня назад все работало... может это все таки глюк хоста? |
| Автор: Kefir 11.2.2006, 23:16 |
| 1. Для каждого вопроса надо создавать новые темы (правила читай). Прошу прощения у модераторов за то что делаю такие замечания 2. Функция hash сушествует в PHP - http://ee.php.net/manual/en/function.hash.php. И хоть сами ПХП-шники нга ПХП.нет не знают о версии, есть предположение что админы твоего хостинга апгрейдят сервер (предположение такое - раньше ПХП был какой-нить 4й версии и ф-ции hash там не было - админы поставили новую версию пхп (например скомпилили из cvs как предполагают разработчики пхп Решение простое - переименуй свою ф-цию hash, например, в my_hash и используй её. |
| Автор: Onis 11.2.2006, 23:44 | ||
Kefir,
хм... админка уже пашет, я переименовал. Скорей всего так и есть, просто сервак проапгрейдили. Вот только я же не спец я вообще в этих функциях ноль. Мож поможете в приведенном мной скрипте выше найти подобные ф-ии ? Хотя бы в блокноте с помощью search. Я конечно понимаю что я просто сажусь на шею, но мне кроме вас некуда идти |
| Автор: Kefir 11.2.2006, 23:59 |
| Onis, ошибка первого скрипта не в использовании уже определённых ф-ций, а в том, что ты используешь переменные типа global show; Я уже говорил как исправить эти ошибки - использовать суперглобальные переменные. Скрипта я досканально не знаю и не буду заниматся его редактированием. Когда-то всем приходится читать доки - для тебя это время настало сейчас |
| Автор: Onis 12.2.2006, 00:26 |
| register_globals = On все равно переписал скрипт, но глюк остался... самый прикол что ошибок сервак не выводит. |
| Автор: Kefir 12.2.2006, 00:29 |
| последи за переменными в скрипте - посмотри что содержится в $image, $dir_folder и т.д. пользуйся var_dump / print_r |
| Автор: sergejzr 12.2.2006, 00:33 |
| первым делом добавь строку error_reporting(E_ALL); в начало файла(сразу после <?), а затем, если не разберёшься сам, выложишь здесь распечатку. |
| Автор: Onis 12.2.2006, 00:52 |
| sergej.z, Notice: Trying to get property of non-object in /home/users/o/onis/docs/scripts/show_last_comment.php on line 13 Но это к основной проблеме не относиться. Вообще другой скрипт, я это сам исправлю. А вот на счет show_photo.php ноль ошибок. http://onis.jino-net.ru/?show=amrod |
| Автор: sergejzr 12.2.2006, 00:57 |
| Распечатывай на каждой строке echo "value=".$show; "value=".$image; и так для всех переменных, чтобы понять, что в проге творится. Может директории такой не существуе, может условие не выполняется. Всё так увидишь. |
| Автор: Onis 12.2.2006, 01:13 |
| Ух... товарищи я вроде нашел ошибку. Заполнение $dir_folder проходит нормально. (20-30 строки) а вот ее чтение проходит глухо как-то... (36-68 строки) На сайте сейчас я сделал вывод значения элементов $dir_folder, правда там все слитно осталось допереть в чем там проблема и испарвить ее Добавлено @ 01:19 Может ф-ю foreach я не правильно юзаю... |
| Автор: Mal Hack 12.2.2006, 01:19 | ||
Знаешь что такое CSV версия? Это версия для разработки, НИКОГДА она на хостинги не поставится. Onis, переписываешь скрипт под register_globals = Off, убираешь использование всех объектов нафиг и тогда решаем вопрос, иначе гадать что и как мы тут будем вечно. |
| Автор: Kefir 12.2.2006, 01:41 | ||
| Mal Hack, 1. Я знаю что такое CVS (а не CSV 2. Говоря о CVS я основывался на этом (взято с php.net):
3. Раз в скрипт не вносились изменения - значит изменение произошли снаружи - значит проапгрейдили ПХП (что по-моему является правдой - хотя на сайте этой конторы не очень конкретно написано). Раз с этого момента ПХП стал ругаться на hash - значит в ПХП появилась такая встроенная ф-ция. На сайте ПХП пишут, что эта ф-ция скорее всего только в CVS, вот я и сделал предположение. Неужели я не логично рассуждаю? ЗЫ Люди разные бывают, на хостинги сейчас ставят всё что попало. И админют как попало. И CVS может быть. |
| Автор: Mal Hack 12.2.2006, 01:44 | ||
Не может такого быть. Я бы автора попросил сказать, как интерпретатор ругается на содержимое функции... |
| Автор: Kefir 12.2.2006, 01:54 |
| Mal Hack, я присутствовал лично при ошибке - такую не перепутаешь: Fatal error: Cannot redeclare phpinfo() in /var/www/hash.php on line 4 (ошибка была 100% такой же - я просто с другой ф-цией делаю, т.к. в моём ПХП нету встроенной hash) Добавлено @ 01:55 ЗЫ А почему не может? Ничего ведь не мешает! |
| Автор: Onis 12.2.2006, 01:59 | ||||
Mal Hack,
да вроде никак не ругаеться.... я выше написал в чем проблема... проблема в массиве объектов $dir_folder, вроде... вот функция (вырезал всё лишнее)
Фишка в том что в $dir_folder все заносится, вроде корректно, но вот читаеться ммм... только один элемент. |
| Автор: Kefir 12.2.2006, 02:00 | ||
Onis, попробуй сделать не foreach а for.
|
| Автор: Onis 12.2.2006, 02:02 |
| Kefir, Вот результаты из галереи с 2 фотами array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } |
| Автор: Kefir 12.2.2006, 02:03 |
| прямо перед циклом for сделай var_dump($dir_folder) и запости сюда результаты |
| Автор: Onis 12.2.2006, 02:13 | ||
| Очень интересный момент. вывод, строки:26 и 37
denis2.jpg denis1.jpg array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } где массив грохается? Добавлено @ 02:16 парадокс какойто блин. |
| Автор: sergejzr 12.2.2006, 02:24 |
| распечатывай индекс $i тоже |
| Автор: Onis 12.2.2006, 02:24 |
| http://www.php.net/ChangeLog-5.php - события которые мне все запороли Добавлено @ 02:29 0 denis2.jpg 1130625299 2 denis1.jpg 1130625297 array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } |
| Автор: sergejzr 12.2.2006, 02:39 | ||
| значит индекс 0, а потом сразу 2. Как это должно работать? Замени-ка $dir_folder[$i]=$f; на array_push($dir_folder[$i],$f); вот так:
|
| Автор: Onis 12.2.2006, 02:46 |
| Warning: array_push(): First argument should be an array in z:\home\php\www\site2.6\scripts\show_photo.php on line 25 Я не знаком с этой ф-ей так что исправить сам не смог |
| Автор: sergejzr 12.2.2006, 02:49 |
| перед циклом поставь $dir_folder=array() Добавлено @ 02:51 Вообще пхп даёт справку так6 www.php.net/имя_функции_с_которой_не_знаком например www.php.net/array_push |
| Автор: Onis 12.2.2006, 02:58 | ||
| 0 denis2.jpg 1130625299 1 denis1.jpg 1130625297 array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } красивее но эфекта ноль...
спасибо, действительно полезный совет. |
| Автор: sergejzr 12.2.2006, 03:07 | ||
| reset($dir_folder);по моему не надо Вообще фигня какая то.. Попробуй чтоли прогони параллельно array
что будет? Добавлено @ 03:07 Ну дык |
| Автор: Onis 12.2.2006, 03:17 | ||
| 0 denis2.jpg 1130625299 1 denis1.jpg 1130625297 Array ( [0] => denis2.jpg [1] => denis1.jpg ) array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } удивительно, и где он там успевает измениться!? Добавлено @ 03:21 может ошибка в том как я вывожу? а именно в цыкле for ?
|
| Автор: sergejzr 12.2.2006, 03:31 |
| вряд ли. reset($dir_folder); убрал? Кстати, можешь убрать global $dir_folder; это тебе не нужно судя по коду |
| Автор: Onis 12.2.2006, 03:49 |
| эх... похоже ничего не выходит |
| Автор: Kefir 12.2.2006, 10:17 | ||
Onis, пойдём драконовскими тупыми методами, - делай
в цикле заполнения + дальше делай этот же самый код до тех пор, когда $dir_folder становится пустым (после КАЖДОЙ команды - будь то sort или reset). Так мы хотя бы узнаем после какого места в скрипте переменная грохается. |
| Автор: Onis 12.2.2006, 13:58 | ||
| Var dump(cразу после заполнения): array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } Var dump: до sort array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } Var dump: после sort array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } Var dump: после for array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } Явно грохается массив сразу после заполнения:
|
| Автор: Kefir 12.2.2006, 14:06 | ||||
вместо
поставь
чтобы было видно что и как в цикле |
| Автор: Onis 12.2.2006, 14:11 |
| Var_dump 'f': object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } } array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } } Var_dump 'f': object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } |
| Автор: Kefir 12.2.2006, 14:24 | ||
ясно, что уже при заполнении подставляются неправильные значения. идём дальше.
|
| Автор: sergejzr 12.2.2006, 14:28 | ||
| Блин, я фигею Чтото мы совсем в глубину забрались, а очевидного не замечаем.
|
| Автор: Onis 12.2.2006, 14:29 |
| i = 0 Var_dump 'f': object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } Var_dump 'dir_folder': array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } } i = 1 i = 2 Var_dump 'f': object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } Var_dump 'dir_folder': array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [2]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } i = 3 Добавлено @ 14:37 Выходит оно как-то заменяет сразу все элементы массива на следующий, а не просто его добовляет... или я чето не понимаю |
| Автор: Kefir 12.2.2006, 14:39 | ||
sergej.z, да-да. правильно подмечено. А давайте попробуем так:
|
| Автор: Onis 12.2.2006, 14:48 |
| sergej.z, Урра! Сделал как вы велели: http://onis.jino-net.ru/?show=denis i = 0 Var_dump 'f': object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } Var_dump 'dir_folder': array(1) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } } i = 1 i = 2 Var_dump 'f': object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } Var_dump 'dir_folder': array(2) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } [2]=> object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } i = 3 Var dump: до sort array(2) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } [2]=> object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } Добавлено @ 14:52 Всем респект |