Збірка php з вихідних під windows

Збірка PHP з початкових кодів під Windows

Інструкція по збірці PHP під WinNT з використанням Microsoft Visual C ++

  • Пакет CYGWIN утиліти bison і flex.
  • Bindlib бібліотека підтримки DNS Lookup.
  • Number4 доповнення до математичної частини.
  • Win32Build готові бібліотеки, необхідні для збірки.
  • Mssql бібліотеки для програмінг під MS SQL 6.5.
  • CVS клієнт для CVS repository потрібен для того, щоб завантажити вихідний код PHP.

Також знадобляться файли від MSVC ++ 6.0 (тільки для користувачів MSVC ++ 5.0)

  • OLE - покласти в VC \ include. Необхідні для СОМ підтримки.
  • HTTP - перейменувати наявні в * .hold, а нові покласти в VC \ include. Необхідні для складання ISAPI фільтра.

Інсталяція

Інсталюючи пакет CYGWIN, наприклад в каталог C: \ Program Files \ Cygnus, в NT треба завести змінну середовища CYGWIN зі значенням% SystemDrive% \ Program Files \ cygnus \ cygwin-b20

Робиться це так: Йдемо в Start-> Settings-> Control Pannel запускаємо ярлик System, вибираємо картку Environment на ній клацає на вікно System variables внизу два рядки Variable і Value, в рядку Variable пишемо CYGWIN а в рядку Value% SystemDrive% \ Program Files \ cygnus \ cygwin-b20 І тиснемо Set а потім Apply.

Створена від кореня каталог Tmp на системному диску і точно так же додаємо змінну TMP зі значенням% SystemDrive% \ Tmp. Додаємо в змінну path шлях% SystemDrive% \ Tmp

Тиснемо Apply і OK. Після цього необхідно перевантажитися.

Розгортаємо архів win32build.zip в каталог, наприклад C: \ Win32build

Запускаємо середу MSVC ++ 5.0 йдемо в Tools-> Options на картку Directory і додаємо в розділи

наступні шляхи відповідно:

  • C: \ Program Files \ cygnus \ cygwin-b20 \ H-i586-cygwin32 \ bin
  • З: \ Win32Build \ include
  • C: \ Win32Build \ lib

Розгортаємо Bindlib_w32.zip в каталог, наприклад C: \ Bindlib, шукаємо в ньому файл проекту bindlib.dsp і збираємо його з-поміж MSVC. У каталозі C: ​​\ Bindlib \ Debug з'явиться resolve.lib, її треба переписати в каталог C: \ Win32Build \ Lib поверх старої.

Інсталюючи клієнта CVS (інструкція по використанню) і завантажуємо вихідний код PHP (php4, TSRM, ZEND), Напімер в каталоги C: \ Php4, C: \ Tsrm і C: \ Zend, потім каталоги Tsrm і Zend переміщаємо в каталог Php4.

Розпаковуємо number4.tar.gz в каталог C: \ Number4 і кладемо вміст в C: \ Php4.

Тупотимо в каталог C: \ Php4 \ Tsrm і збираємо TSRM.dsp, після складання в каталозі C: ​​\ Php4 \ Tsrm \ Debug з'явиться Tsrm.lib, скопіювати її в каталог C: \ Win32Build \ Lib.

Переходимо в каталог C: \ Php4 \ Zend, відкриваємо проект ZendTS.dsp і збираємо його, після складання в каталозі C: ​​\ Php4 \ Zend \ Debug з'явиться бібліотека ZendTS.lib, копіюємо її в каталог C: \ Win32Build \ Lib.

Переходимо в каталог C: \ Php4 і відкриваємо проект php4ts.dsp. У ньому 4 проекти спочатку збираємо php4ts (не забудьте встановити активний проект Project-> Set Active Project-> php4ts).

Після складання в каталозі C: ​​\ Php4 \ Debug з'явиться файл php4ts.lib, php4ts.dll, php.exe. Php4ts.lib знову копіюємо в C: \ Win32Build \ Lib. Ця бібліотека потрібна для збирання зовнішніх модулів php, наприклад для модуля підтримки mssql.

Робимо активним проект php4isapi і збираємо його. У каталозі C: ​​\ php4 \ sapi \ isapi \ debug буде лежати php4isapi.dll - фільтр для IIS.

Відомі баги, які шибко заважають працювати і шляхи їх лікування

1. Через елеметов форми не постять дані розміром більше 4К, що не аплоаду файли розміром більше 4К. php4.exe процес підвисає і знімається тільки рестартом IISа. (Отписал в репорт баг, але коли виправлять незрозуміло, спробую виправити сам) .Рішення: Обходиться використанням php 3.12-3.14 для обробки файлів реакції форм. Повільніше, зате працює.

2. При виконанні динамічного коду в якому відбувається використання серіалізовать змінних парсер видає оштбку. наприклад:

Відбувається це через те, що в четвертій версії символи <> використовуються для інкапсуляції змінних в рядок, наприклад $ a = "Такий ось елемент";

Але серіалізовані уявлення масиву теж містить символи <>.

У прикладі, описаному вище парсер намагається инкапсулировать вираз, яке насправді виразом то і не є і природно валиться з помилкою.

Збірка модуля Php 4.03 betta для MS SQL 6.5 (mssql.dll)

Розпакувати mssql.zip. * .lib закидаємо в C: \ Win32Build \ Lib, а * .h в C: \ Win32Build \ Include.

Тупотимо в каталог C: \ Php4 \ ext \ mssql і відкриваємо в середовищі MSVC проект mssql.dsp.

Йдемо в Project-> Settings на картці C / C ++ в Additional include directories додаємо. \ .. \ Tsrm, в розділ Preprocessor додаємо COMPILE_DL, ZTS, MSSQL65, DBNTWIN32, а в розділ Object / Libraries modules на картці Link додаємо php4ts.lib, ntwdblib.lib. Потім збираємо проект. У каталозі C: ​​\ Php4 \ ext \ mssql \ Debug з'явиться mssql.dll.

Схожі статті