Скажемо “Ні!” – PHP з роздільними модулями, або як боротися із “PHP’s Buildconf: Can’t figure out your VCS, not cleaning.”

PHP: Hypertext Preprocessor

PHP: Hypertext Preprocessor

Досить часто на різних форумах чи блогах зустрічаю скарги людей, які жаліються на те, що “buildconf”(скрипт, який перебудовує конфігураційний файл на основі наявних розширень у папці “ext” та інших параметрів), не працює належним чином. В принципі, з такою проблемою рідко хто зустрічається, адже використовувати “buildconf” немає потреби, так як вихідний код PHP уже містить конфігураційний файл “configure”, що містить інформацію про всі наявні розширення із /php-x.x.x/ext.

Але я не є прихильником того, коли PHP компілюють із роздільними модулями (shared). Іншими словами, коли уже зазначені модулі у *.INI файлі, PHP буде підключати із системи. Тому, альтернативним варіантом є компіляція PHP одразу з необхідними мені розширеннями. Робити акцент на тому, наскільки PHP із роздільними модулями буде повільніше працювати (старт ВЕБ-сервера і тд.) чи про витрати пам’яті я не буду, так як про це досить багато статтей є в Інтернеті. Мова піде якраз про те, як зібрати PHP на Mac OS з модулями, які будуть зібрані разом із ядром самого ж PHP…

Нічого складного немає! Для цього нам будуть потрібні: код самого ж PHP (можна взяти тут) та необхідні нам модулі, які не ідуть у стандартній поставці з PHP. Для прикладу: візьмемо найвідоміші: Alternative PHP Cache (APC) та Suhosin. Дальше потрібно розпаковані додаткові модулі скопіювати у вихідний код PHP у папку /php-x.x.x/etc/.

Важливо! Назва модуля не повинна містити його версію, інакше, при конфігурації нам так і прийдеться вказувати його з повною назвою+версію. Тобто, якщо мова іде про APC, то слід його скопіювати у папку /php-x.x.x/etc/apc/

Тепер залишилось лиш обновити конфігураційний файл PHP (configure), щоб йому було відомо про наші нові модулі. Для цього заходимо в термінал, а саме, в папку /php-x.x.x/. Нас цікавить файл “buildconf”. Виконуємо наступні команди:

Важливий момент для Mac OS! Перед тим як обновити конфігураційний файл, ми спершу видалили його попередню версію, інакше якщо цього не зробити, то отримаємо наступну помилку:

Forcing buildconf
buildconf: checking installation…
buildconf: autoconf version 2.61 (ok)
buildconf: Your version of autoconf likely contains buggy cache code.
Running vcsclean for you.
To avoid this, install autoconf-2.13.
Can’t figure out your VCS, not cleaning.

Якщо все виконали правильно, то у /php-x.x.x/ папці у нас буде новий configure файл. Тепер лиш залишилось включати наші модулі у конфігураційну команду. Згідно прикладу вище, це буде:

P.S: Після завершення компіляції PHP – не забудьте перевірити наявні модулі у ньому. Це все можна зробити за допомогою: