Как подключить timezonedb к php
Задача:
Для корректного отображения часовых поясов в приложениях php необходимо привязать базу данных часовых поясов timezonedb к оболочке
php.
Вроде бы много об этом написано, но только все для unix-овых систем.
Как же откомпилировать timezonedb в MS Windows?
Решение:
-
Скачиваем исходники для своей сборки php отсюда
-
Распаковываем эти исходники в папку на жестком диске. Желательно, чтобы полный путь не содержал пробелов и кириллицы. Например, пусть будет папка C:\Soft\!\php
-
Качаем актуальную версию timezonedb отсюда
-
Распаковываем скачанный архив в папку "ext", находящуюся там, куда мы распаковали исходники php. В нашем примере получится новая папка C:\Soft\!\php\ext\timezonedb, содержащая файлы из актуального архива timezonedb - примерно такие:
-
config.m4
-
config.w32
-
CREDITS
-
package2.xml
-
package.xml
-
php_timezonedb.h
-
timezonedb.c
-
timezonedb.h
-
-
Скачиваем два исполняемых файла flex.exe и bison.exe:
Либо можно скачать полные архивы с этими файлами (хотя из них нам понадобится лишь два экзешника flex.exe и bison.exe, которые я вырезал и выложил в предыдущем архиве):
-
Распаковываем flex.exe и bison.exe в корень папки с исходниками php
-
Скачиваем и устанавливаемMicrosoft Visual Studio C++ 2008 Express с сайта Microsoft (нам потребуется установщик vcsetup.exe).
Внимание!!! Устанавливать 2010 и другие версии Microsoft Visual Studio не нужно, так как бинарники php скомпилированы либо на 2008 либо на VC9 версиях Visual Studio, а версии компиляторов должны совпадать. -
Открываем в текстовом редакторе файл C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat, находим в нем строку, где прописываются пути - примерно следующего вида:
Код: Выделить всё
@set PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...
-
Сразу после знака "=" дописываем в эту строку путь до папки, куда распаковали исходники php. Получится что-то такое:
Код: Выделить всё
@set PATH=C:\Soft\!\php;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...
Это нужно для того, чтобы оболочка Microsoft Visual Studio увидела файлы flex.exe и bison.exe
-
Запускаем командную строку Visual Studio 2008 (Visual Studio 2008 command prompt):
-
Убеждаемся, что текущая папка "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin", при необходимости переходим в нее:
Код: Выделить всё
cd C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
-
Выполняем скрипт, задающий значения переменных для данной сессии:
Код: Выделить всё
vcvars32.bat
-
Переходим в папку, куда распаковали исходники php:
Код: Выделить всё
cd C:\Soft\!\php
и, для очистки от всех возможных предыдущих компиляций, выполняем скрипт
Код: Выделить всё
nmake clean
-
Далее, для обновления конфигурации расширений php выполняем:
Код: Выделить всё
buildconf.bat
и выводим список зарегистрированных расширений командой:
Код: Выделить всё
configure --help
-
Убеждаемся, что в списке присутствует строка вида:
Код: Выделить всё
--enable-timezonedb
-
Выполняем команду:
Код: Выделить всё
cscript /nologo configure.js --enable-timezonedb=shared --without-mysqlnd --disable-zts
-
Компилируем библиотеку dll:
Код: Выделить всё
nmake php_timezonedb.dll
Это займет некоторое время - в зависимости от производительности ПК - 5-15 минут.
-
После окончания компиляции увидим что-то такое:
-
Теперь можно забирать полученную библиотеку из папки Release, которая находится в корне папки и исходниками php (в нашем примере: C:\Soft\!\php\Release\php_timezonedb.dll)
Откомпилированную (готовую к употреблению) библиотеку php_timezonedb.dll вместе с сформировавшейся с ней библиотекой php5.dll для php 5.3.2 и базы данный временных зон версии 2012.9, можно скачать из приложенного архива:
Файлы библиотек php_timezonedb.dll и php5.dll для php 5.3.3 и базы данный временных зон версии 2012.9, качаем из этого архива: