UncleFather » 19 ноя 2012 15:37, Пн
Задача:
Для корректного отображения часовых поясов в приложениях 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):
- 01.JPG (9.92 КБ) 7060 просмотров
-
Убеждаемся, что текущая папка "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin", при необходимости переходим в нее:
Код: Выделить всё
cd C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
-
Выполняем скрипт, задающий значения переменных для данной сессии:
-
Переходим в папку, куда распаковали исходники php:
и, для очистки от всех возможных предыдущих компиляций, выполняем скрипт
-
Далее, для обновления конфигурации расширений php выполняем:
и выводим список зарегистрированных расширений командой:
-
Убеждаемся, что в списке присутствует строка вида:
-
Выполняем команду:
Код: Выделить всё
cscript /nologo configure.js --enable-timezonedb=shared --without-mysqlnd --disable-zts
-
Компилируем библиотеку 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, качаем из этого архива:
[b][size=150]Задача:[/size][/b]
Для корректного отображения часовых поясов в приложениях php необходимо привязать базу данных часовых поясов timezonedb к оболочке
php.
Вроде бы много об этом написано, но только все для unix-овых систем.
Как же откомпилировать timezonedb в MS Windows?
[b][size=150]Решение:[/size][/b]
[list=1][*] Скачиваем исходники [b]для своей сборки php[/b] [url=http://windows.php.net/downloads/releases/archives/]отсюда[/url]
[*] Распаковываем эти исходники в папку на жестком диске. Желательно, чтобы полный путь не содержал пробелов и кириллицы. Например, пусть будет папка [b][i]C:\Soft\!\php[/i][/b]
[*] Качаем актуальную версию timezonedb [url=http://pecl.php.net/package/timezonedb]отсюда[/url]
[*] Распаковываем скачанный архив в папку "[b][i]ext[/i][/b]", находящуюся там, куда мы распаковали исходники php. В нашем примере получится новая папка [b][i]C:\Soft\!\php\ext\timezonedb[/i][/b], содержащая файлы из актуального архива [b][i]timezonedb[/i][/b] - примерно такие:[list]
[*] config.m4
[*] config.w32
[*] CREDITS
[*] package2.xml
[*] package.xml
[*] php_timezonedb.h
[*] timezonedb.c
[*] timezonedb.h[/list]
[*] Скачиваем два исполняемых файла [b][i]flex.exe[/i][/b] и [b][i]bison.exe[/i][/b]:
[attachment=11]Executions.rar[/attachment]
Либо можно скачать полные архивы с этими файлами (хотя из них нам понадобится лишь два экзешника [b][i]flex.exe[/i][/b] и [b][i]bison.exe[/i][/b], которые я вырезал и выложил в предыдущем архиве):
[attachment=10]flex-2.5.4a-1-bin.zip[/attachment]
[attachment=9]bison-2.4.1-bin.zip[/attachment]
[*] Распаковываем [b][i]flex.exe[/i][/b] и [b][i]bison.exe[/i][/b] в корень папки с исходниками php
[*] Скачиваем и устанавливаем[url=http://download.microsoft.com/download/a/3/7/a373783a-8ccb-4b6d-bfae-c553bcf7db93/vcsetup.exe]Microsoft Visual Studio C++ 2008 Express[/url] с сайта [url=http://www.microsoft.com/ru-ru/download/details.aspx?id=6506]Microsoft[/url] (нам потребуется установщик [b][i]vcsetup.exe[/i][/b]).
[b]Внимание!!![/b] Устанавливать 2010 и другие версии Microsoft Visual Studio не нужно, так как бинарники php скомпилированы либо на 2008 либо на VC9 версиях Visual Studio, а версии компиляторов должны совпадать.
[*] Открываем в текстовом редакторе файл [b][i]C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat[/i][/b], находим в нем строку, где прописываются пути - примерно следующего вида: [code]@set PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...[/code]
[*] Сразу после знака "=" дописываем в эту строку путь до папки, куда распаковали исходники php. Получится что-то такое: [code]@set PATH=C:\Soft\!\php;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;...[/code]
Это нужно для того, чтобы оболочка Microsoft Visual Studio увидела файлы [b][i]flex.exe[/i][/b] и [b][i]bison.exe[/i][/b]
[*] Запускаем командную строку Visual Studio 2008 (Visual Studio 2008 command prompt):[attachment=8]01.JPG[/attachment]
[*] Убеждаемся, что текущая папка "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin", при необходимости переходим в нее:[code]cd C:\Program Files\Microsoft Visual Studio 9.0\VC\bin[/code]
[attachment=7]02.JPG[/attachment]
[*] Выполняем скрипт, задающий значения переменных для данной сессии:[code]vcvars32.bat[/code]
[attachment=6]03.JPG[/attachment]
[*] Переходим в папку, куда распаковали исходники php: [code]cd C:\Soft\!\php[/code] и, для очистки от всех возможных предыдущих компиляций, выполняем скрипт [code]nmake clean[/code]
[attachment=5]04.JPG[/attachment]
[*] Далее, для обновления конфигурации расширений php выполняем: [code]buildconf.bat[/code] и выводим список зарегистрированных расширений командой: [code]configure --help[/code]
[*] Убеждаемся, что в списке присутствует строка вида:[code]--enable-timezonedb[/code]
[attachment=4]05.JPG[/attachment]
[*] Выполняем команду: [code]cscript /nologo configure.js --enable-timezonedb=shared --without-mysqlnd --disable-zts[/code]
[attachment=3]06.JPG[/attachment]
[*] Компилируем библиотеку dll:[code]nmake php_timezonedb.dll[/code]
Это займет некоторое время - в зависимости от производительности ПК - 5-15 минут.
[*] После окончания компиляции увидим что-то такое:
[attachment=2]07.JPG[/attachment]
[*] Теперь можно забирать полученную библиотеку из папки [b][i]Release[/i][/b], которая находится в корне папки и исходниками php (в нашем примере: [b][i]C:\Soft\!\php\Release\php_timezonedb.dll[/i][/b])[/list]
Откомпилированную (готовую к употреблению) библиотеку [b][i]php_timezonedb.dll[/i][/b] вместе с сформировавшейся с ней библиотекой [b][i]php5.dll[/i][/b] для php 5.3.2 и базы данный временных зон версии 2012.9, можно скачать из приложенного архива:[attachment=1]php_timezonedb.dll.rar[/attachment]
Файлы библиотек [b][i]php_timezonedb.dll[/i][/b] и [b][i]php5.dll[/i][/b] для php 5.3.3 и базы данный временных зон версии 2012.9, качаем из этого архива:[attachment=0]php_timezonedb.dll_5.3.3.rar[/attachment]