Как подключить timezonedb к php

Microsoft Internet Security and Acceleration (ISA) Server
Microsoft Internet Information Services
Kerio Connect
Kerio Mail Server
Kerio Firewall
UserGate
DHCP, DNS, SMTP, POP, WWW, FTP


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Как подключить timezonedb к php

Сообщение UncleFather »

Задача:

Для корректного отображения часовых поясов в приложениях php необходимо привязать базу данных часовых поясов timezonedb к оболочке
php.

Вроде бы много об этом написано, но только все для unix-овых систем.

Как же откомпилировать timezonedb в MS Windows?

Решение:

  1. Скачиваем исходники для своей сборки php отсюда

  2. Распаковываем эти исходники в папку на жестком диске. Желательно, чтобы полный путь не содержал пробелов и кириллицы. Например, пусть будет папка C:\Soft\!\php

  3. Качаем актуальную версию timezonedb отсюда

  4. Распаковываем скачанный архив в папку "ext", находящуюся там, куда мы распаковали исходники php. В нашем примере получится новая папка C:\Soft\!\php\ext\timezonedb, содержащая файлы из актуального архива timezonedb - примерно такие:

    • config.m4

    • config.w32

    • CREDITS

    • package2.xml

    • package.xml

    • php_timezonedb.h

    • timezonedb.c

    • timezonedb.h

  5. Скачиваем два исполняемых файла flex.exe и bison.exe:

    Executions.rar
    (176.12 КБ) 654 скачивания

    Либо можно скачать полные архивы с этими файлами (хотя из них нам понадобится лишь два экзешника flex.exe и bison.exe, которые я вырезал и выложил в предыдущем архиве):

    flex-2.5.4a-1-bin.zip
    (198.05 КБ) 567 скачиваний
    bison-2.4.1-bin.zip
    (941.14 КБ) 587 скачиваний
  6. Распаковываем flex.exe и bison.exe в корень папки с исходниками php

  7. Скачиваем и устанавливаемMicrosoft Visual Studio C++ 2008 Express с сайта Microsoft (нам потребуется установщик vcsetup.exe).
    Внимание!!! Устанавливать 2010 и другие версии Microsoft Visual Studio не нужно, так как бинарники php скомпилированы либо на 2008 либо на VC9 версиях Visual Studio, а версии компиляторов должны совпадать.

  8. Открываем в текстовом редакторе файл C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat, находим в нем строку, где прописываются пути - примерно следующего вида:

    Код: Выделить всё

    @set PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...
  9. Сразу после знака "=" дописываем в эту строку путь до папки, куда распаковали исходники php. Получится что-то такое:

    Код: Выделить всё

    @set PATH=C:\Soft\!\php;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...

    Это нужно для того, чтобы оболочка Microsoft Visual Studio увидела файлы flex.exe и bison.exe

  10. Запускаем командную строку Visual Studio 2008 (Visual Studio 2008 command prompt):

    01.JPG
    01.JPG (9.92 КБ) 6981 просмотр
  11. Убеждаемся, что текущая папка "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin", при необходимости переходим в нее:

    Код: Выделить всё

    cd C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
    02.JPG
  12. Выполняем скрипт, задающий значения переменных для данной сессии:

    Код: Выделить всё

    vcvars32.bat
    03.JPG
  13. Переходим в папку, куда распаковали исходники php:

    Код: Выделить всё

    cd C:\Soft\!\php

    и, для очистки от всех возможных предыдущих компиляций, выполняем скрипт

    Код: Выделить всё

    nmake clean
    04.JPG
  14. Далее, для обновления конфигурации расширений php выполняем:

    Код: Выделить всё

    buildconf.bat

    и выводим список зарегистрированных расширений командой:

    Код: Выделить всё

    configure --help
  15. Убеждаемся, что в списке присутствует строка вида:

    Код: Выделить всё

    --enable-timezonedb
    05.JPG
  16. Выполняем команду:

    Код: Выделить всё

    cscript /nologo configure.js --enable-timezonedb=shared --without-mysqlnd --disable-zts
    06.JPG
  17. Компилируем библиотеку dll:

    Код: Выделить всё

    nmake php_timezonedb.dll

    Это займет некоторое время - в зависимости от производительности ПК - 5-15 минут.

  18. После окончания компиляции увидим что-то такое:

    07.JPG
  19. Теперь можно забирать полученную библиотеку из папки Release, которая находится в корне папки и исходниками php (в нашем примере: C:\Soft\!\php\Release\php_timezonedb.dll)

Откомпилированную (готовую к употреблению) библиотеку php_timezonedb.dll вместе с сформировавшейся с ней библиотекой php5.dll для php 5.3.2 и базы данный временных зон версии 2012.9, можно скачать из приложенного архива:

php_timezonedb.dll.rar
(1.06 МБ) 618 скачиваний

Файлы библиотек php_timezonedb.dll и php5.dll для php 5.3.3 и базы данный временных зон версии 2012.9, качаем из этого архива:

php_timezonedb.dll_5.3.3.rar
(1.06 МБ) 718 скачиваний

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение