Конечно, если это исполнять до времени Ч, то эффект не будет заметен, поэтому надо перевести будет дату на сервере уже за оное время Ч и исполнить его еще раз. Будет видно, что консольное время ОС отличается от времени PHP-скриптов, несмотря на то, что даже перезагружали Apache. Что же делать?


Пересобираем PHP timezonedb под Solaris

Описанная ниже методика справедлива не только для ОС Solaris. Просто под другие ОС эта процедура может быть исполнена одной командой, и вот если, по какой-то причине, собрать через pecl не вышло, то можно действовать уже по данной методике.


Берем исходник

Взять исходник можно по адресу: PECL package. Берем последнюю, стабильную версию. Скорее всего она уже будет содержать необходимые нам изменения в базе зон.


Альтернативный процесс сборки под Solaris

Тут специально, для примера, приводятся не стандартные пути сборки для 64-bit PHP под ОС Solaris. Случаи могут быть разные...

  1. Создаем каталог в котором будем разворачивать наш дистрибутив зон:
    mkdir /tmp/phptz
    
  2. Копируем в этот каталог взятый свежий PECL пакет timezonedb
  3. Распаковываем архив:
    gunzip timezonedb-2014.10.tgz
    tar xvf timezonedb-2014.10.tar
  4. Переходим в одноименный каталог:
    cd timezonedb-2014.10
  5. Исполняем следующую стандартную команду из пакета PHP:
    /usr/local/sparcv9/php/bin/phpize



  6. Затем делаем конфигурацию, при которой создаться необходимое дерево каталогов (-m64 это чтобы собрать ELF64 файл, а не ELF32 по-умолчанию):
    CFLAGS="-m64" LDFLAGS="-m64" ./configure --prefix=/usr/local/sparcv9 --with-php-config=/usr/local/sparcv9/php/bin/php-config



  7. Когда преконфигурирование завершится, выполняем:
    make
    make test
  8. Старую библиотеку базы временных зон, на всякий случай переименовываем:
    mv /usr/local/sparcv9/php/ext/timezonedb.so /usr/local/sparcv9/php/ext/timezonedb.so.OLD
  9. Копируем новую библиотеку на место старой:
    cp modules/timezonedb.so /usr/local/sparcv9/php/ext/timezonedb.so
  10. Не забываем в php.ini указать:
      extension=timezonedb.so
  11. Перезапускаем Apache server через svcadm.
Конечно, метод не лишен недостатков, но позволяет относительно быстро поправить убегание временной зоны на нестандартных инсталляциях PHP.