[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: DateTime: перехожу с ПХП 5.2.5 на 5.3.1
sergeiss
Коллеги, выручайте!

Вот уже пару часов прыгаю по граблям, не знаю, что делать.

Суть проблемы. Был на сервере ПХП 5.2.5. В процессе апгрейда сервера переустанавливался весь софт, поэтому я взял последнюю версию ПХП, 5.3.1. И всё бы "ничаво", если бы не несколько граблей. Некоторые я обнаружил и устранил, а некоторые бьют по лбу и не дают двигаться дальше.

Вот есть кусок скрипта (было 2 строки, остальные я вставил для контроля).

error_reporting(E_ALL);
echo "before DateTime creation : '[$record_date] [$starttime] [$stoptime]'<br>";
$start_new=new DateTime( $record_date.' '.$starttime );
$stop_new=new DateTime( $record_date.' '.$stoptime );
echo 'DateTime variables created<br>';


Выдаёт этот скрипт
before DateTime creation : '[2009-12-08] [06:00:00] [07:00:00]'

и "благополучно" завершает работу. Безо всяких предупреждений, молча, по-предательски. Где-то на DateTime спотыкается. И чего с ним, заразой делать???

"Втыкание" в мануалы не помогло - эта функция, вроде как, не менялась при переходе между этими версиями ПХП, и входит в ядро ПХП (т.е. не требуется отдельная библиотека).

А из-за этого у меня не идет загрузка данных...



Спустя 18 минут, 52 секунды (8.12.2009 - 16:00) waldicom написал(а):
Попробуй заключить в try... catch

Спустя 3 минуты, 5 секунд (8.12.2009 - 16:03) sergeiss написал(а):
Пока подключил ПХП 5.2.5 - всё работает "как часы". Нужно же данные заливать...

Видел еще одну проблему, прямо перед тем, как вернулся к прежней версии ПХП (не показываются данные на одной странице). Но даже разбираться не стал. Потом буду смотреть, на ноуте эмулировать это всё. Но не на "коммерческом" сайте.

Так что вопрос всё равно открытый остался, только не срочный уже.

waldicom - попробовать можно, только что мне это даст? Мне же нужно записать дату-время, взятые из файла, затем их преобразовать. try-catch только покажет наличие проблемы, но данные обработать не позволит.

Спустя 1 минута, 45 секунд (8.12.2009 - 16:04) waldicom написал(а):
Цитата (sergeiss @ 8.12.2009 - 15:03)
try-catch только покажет наличие проблемы,

иногда этого более чем достаточно, чтобы решить проблему

Спустя 1 минута, 59 секунд (8.12.2009 - 16:06) glock18 написал(а):
Вряд ли молча. Скорее всего ошибки просто не выводятся. Для уверенности display_errors надо установить. Что касается самой проблемы, то в 5.3 объединили ошибки уровня E_STRICT с E_ALL. У меня при переходе была проблема с тем, что если не установлен часовой пояс перед использованием функций работы со временем, то вылазит ворнинг. Раньше это был E_STRICT и я забивал на него, теперь, нужно устанавливать дефолтную временную зону. это самое простое в этой ситуации.

Хотя что конкретно, сомневаюсь сказать. Ворнинг не останавливает работу, и echo второй должен был отработать. В любом случае, ошибку надо смотреть:

1. display_errors
2. поставить свой error_handler и ловить им
3. ошибки могут логироваться. тогда лог посмотреть.

Спустя 1 минута, 36 секунд (8.12.2009 - 16:08) glock18 написал(а):
waldicom
sergeiss
а не все равно в try или нет? если метод выбрасывает исключение, то интерпретатор обычно backtrace выводит с воплями, что исключение не поймано. если не выбрасывает, то и смысла вроде нет особого.

Спустя 3 минуты, 33 секунды (8.12.2009 - 16:12) sergeiss написал(а):
Цитата (glock18 @ 8.12.2009 - 17:06)
Для уверенности display_errors надо установить.

Вот это, да, надо будет попробовать smile.gif Про эту фигню я забыл.

Цитата (glock18 @ 8.12.2009 - 17:06)
У меня при переходе была проблема с тем, что если не установлен часовой пояс перед использованием функций работы со временем, то вылазит ворнинг.

А вот тут поподробнее, плз...

PS. display_errors посмотрел - в старом было включено, в новом - выключено.

Спустя 12 минут, 32 секунды (8.12.2009 - 16:24) glock18 написал(а):
дк его надо включить, а не посмотреть

Спустя 3 минуты, 54 секунды (8.12.2009 - 16:28) waldicom написал(а):
Цитата (glock18 @ 8.12.2009 - 15:08)
а не все равно в try или нет? если метод выбрасывает исключение, то интерпретатор обычно backtrace выводит с воплями, что исключение не поймано. если не выбрасывает, то и смысла вроде нет особого.

Буду дома, проверю, но по идее, если стоит в try...catch, то в случае ошибки управление передается блоку catch. Если без try...catch, то генерируется исключение/предупреждение и, если показ ошибок выключен, то ничего показано не будет.
Но надо проверить.

Спустя 7 минут, 53 секунды (8.12.2009 - 16:36) glock18 написал(а):
waldicom
проверь и отпиши smile.gif

Спустя 8 минут, 56 секунд (8.12.2009 - 16:45) sergeiss написал(а):
Цитата (glock18 @ 8.12.2009 - 17:24)
дк его надо включить, а не посмотреть

Я это уже не могу сделать оперативно, т.к. на ноуте установлю сначала 5.3.1, а потом уже буду экспериментировать, пока все проблемы не решу. И до тех пор на основном сайте будет жить 5.2.5. А проявились проблемы как раз на основном сайте.
У меня уж тут "народ" беспокоиться начал, привыкли к хорошей жизни smile.gif Мол, где статистика, куда дел? smile.gif

Поэтому пока только "посмотрел".

Спустя 1 час, 33 минуты, 4 секунды (8.12.2009 - 18:18) Michael написал(а):
Цитата (waldicom @ 8.12.2009 - 15:28)
Буду дома, проверю, но по идее, если стоит в try...catch, то в случае ошибки управление передается блоку catch. Если без try...catch, то генерируется исключение/предупреждение и, если показ ошибок выключен, то ничего показано не будет.
Но надо проверить.

Ошибки php не перехватывает, и при них не выбрасывает в catch. Только с брошенными пользовательскими(throw) так.

Спустя 5 минут, 10 секунд (8.12.2009 - 18:23) waldicom написал(а):
Цитата (Michael @ 8.12.2009 - 17:18)
Только с брошенными пользовательскими(throw) так


Читаем документацию, видим
Цитата

Errors/Exceptions
Emits Exception in case of an error.


Что это значит?

Спустя 1 минута, 26 секунд (8.12.2009 - 18:25) Michael написал(а):
Цитата (waldicom @ 8.12.2009 - 17:23)
Цитата (Michael @ 8.12.2009 - 17:18)
Только с брошенными пользовательскими(throw) так

Цитата

Errors/Exceptions
Emits Exception in case of an error.

Настройки php.ini ?

Спустя 48 секунд (8.12.2009 - 18:25) waldicom написал(а):
Цитата (Michael @ 8.12.2009 - 17:25)
Цитата (waldicom @ 8.12.2009 - 17:23)
Цитата (Michael @ 8.12.2009 - 17:18)
Только с брошенными пользовательскими(throw) так

Цитата

Errors/Exceptions
Emits Exception in case of an error.

Настройки php.ini ?

Причем тут настройки? Речь идет о классе DateTime. Вот его конструктор:
http://de.php.net/manual/en/datetime.construct.php

Спустя 11 минут, 11 секунд (8.12.2009 - 18:37) Michael написал(а):
Цитата (waldicom @ 8.12.2009 - 17:25)
http://de.php.net/manual/en/datetime.construct.php

Да, понял, не посмотрел сначала что с объектом DateTime. Так должно перехватить.

Спустя 3 часа, 34 минуты, 32 секунды (8.12.2009 - 22:11) sergeiss написал(а):
У меня подозрение, что надо просто выставить дефолтный параметр timezone.

Пошел сейчас на php.net - появилось подозрение, что вообще скачал версию, которая не для Апача smile.gif Но проверить это смогу только завтра на работе. А сейчас качаю "ту" версию, чтобы на ноуте установить.

Спустя 1 час, 7 секунд (8.12.2009 - 23:11) waldicom написал(а):
а это... а какая разница?

Спустя 9 минут, 26 секунд (8.12.2009 - 23:21) sergeiss написал(а):
http://windows.php.net/download/ - пишут, что есть разница (читай вверху слева Which version do I choose?) wink.gif . Одна версия для Апача, другая версия для IIS.
И я точно помню, что качал чего-то из верхней части. Как раз то, что для IIS.

Спустя 2 часа, 19 минут, 35 секунд (9.12.2009 - 01:40) waldicom написал(а):
Прикольно...Не знал, спасибо.

Спустя 1 день, 15 часов, 51 минута, 43 секунды (10.12.2009 - 17:32) sergeiss написал(а):
Сегодня проверил. Чтобы DateTime (и другие функции работы с датами) работали исправно, надо установить в ини-файле

date.timezone = Europe/Moscow


Либо, можно то же самое делать в каждом скрипте специальной функцией.


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.