Компіляція та встановлення власних PHP модулів у ServBay
ServBay — потужне локальне середовище веб-розробки, що підтримує macOS і Windows, та інтегрує широкий набір пакетів для сучасних розробників. У ServBay зібрано PHP, Node.js, Python, Go, Java, бази даних (MySQL, PostgreSQL, MongoDB), кешування (Redis), а також сервери (Caddy, Nginx, Apache). Для кожного пакету ServBay підтримує множинні версії, і ви можете легко перемикати середовища відповідно до потреб проекту.
Щоб розширити можливості PHP або інтегрувати сторонні сервіси, іноді потрібно скомпілювати та встановити додаткові PHP модулі, хоча ServBay вже містить багато поширених розширень.
У цьому документі детально пояснюється, як компілювати й встановлювати власні модулі для вашої версії PHP у ServBay. Ми розглянемо створення поширених розширень — модуль для обробки зображень imagick
та драйвер для бази даних MS SQL Server sqlsrv
, — щоб ви могли легко додати потрібний функціонал у середовище ServBay.
Передумови
Важлива інформація
Перед компіляцією будь-якого модулю для PHP найважливіший крок — правильно ініціалізувати середовище компіляції згідно офіційної документації ServBay і коректно налаштувати системні змінні оточення. Від цього залежить успіх компіляції будь-якого пакету ServBay, у тому числі PHP модулів. Якщо пропустити або некоректно виконати цей етап, висока ймовірність, що надалі компіляція завершиться помилкою із повідомленнями про відсутні команди, бібліотеки або заголовки.
Скрипт ініціалізації компіляційного середовища ServBay встановлює необхідні змінні, такі як PATH
(шлях до внутрішніх інструментів ServBay), SERVBAY_PACKAGE_FULL_PATH
(коренова директорія пакетів ServBay) та CPU_NUMBER
(для багатопоточної компіляції). Ці змінні критично важливі для наступних команд компіляції.
Докладні кроки щодо ініціалізації компіляційного середовища читайте в Інструкції з повторної компіляції ServBay. Переконайтеся, що ви повністю ознайомились і суворо дотримались усіх налаштувань із цієї документації.
Перед виконанням компіляції модуля переконайтеся, що середовище компіляції ServBay вже успішно ініціалізовано і потрібні змінні оточення встановлені у вашій поточній командній сесії.
Важливість вибору версії PHP
Одна з ключових переваг ServBay — це підтримка одночасної роботи кількох версій PHP в межах однієї системи. Ви можете підлаштовувати середовище для кожного проекту. Але при компіляції модулів потрібно працювати з конкретною версією PHP. Головні інструменти — phpize
та php-config
— жорстко пов'язані з відповідною версією PHP.
phpize
: скрипт для підготовки середовища компіляції розширень PHP. Читає файлconfig.m4
та створює стандартний скриптconfigure
— це перший крок компіляції C/C++ програм.php-config
: повертає детальну інформацію про встановлену версію PHP: компіляційні ключі, директорії заголовків, бібліотек, директорія для extension тощо. Ядроconfigure
звертається доphp-config
з метою коректної компіляції і лінкування модуля з цільовою версією PHP.
Тому для phpize
, php-config
та інших команд, прив’язаних до билду PHP, потрібно вказувати повний шлях саме до інструментів тієї версії, для якої збирається модуль.
Приклад шляху
Якщо ви хочете зібрати модуль для PHP 8.3, встановленого в ServBay:
macOS:
phpize
:/Applications/ServBay/package/php/8.3/current/bin/phpize
php-config
:/Applications/ServBay/package/php/8.3/current/bin/php-config
Windows:
phpize
:C:\ServBay\package\php\8.3\current\bin\phpize
php-config
:C:\ServBay\package\php\8.3\current\bin\php-config
Коректний вибір версії гарантує сумісність модулю з вашим PHP і запобігає проблемам компіляції чи помилкам типу “відсутній символ” при запуску.
Всі приклади цього документа наведено для PHP 8.3 у ServBay. Для реальної роботи змінюйте шляхи відповідно до версії PHP, з якою працюєте.
Компіляція PHP модуля imagick
Модуль imagick
— дуже популярне розширення PHP для роботи з зображеннями, базується на потужній бібліотеці ImageMagick. Дає можливість масштабувати, обрізати, конвертувати формат, додавати водяні знаки, комбінувати, — виконувати як прості, так і складні задачі з обробки зображень у PHP. Нижче описано покрокову процедуру компіляції та встановлення imagick
для обраної версії PHP у ServBay.
Крок 1: Встановлення бібліотеки ImageMagick
imagick
залежить від наявності ImageMagick на вашій системі.
macOS
Рекомендуємо поставити через Homebrew. Якщо Homebrew ще нема — дізнайтесь на офіційному сайті Homebrew, як встановити.
Відкрийте термінал та виконайте команду для встановлення ImageMagick та dev-заголовків:
bash
brew install imagemagick
1
Windows
На Windows потрібно вручну завантажити та встановити ImageMagick з офіційної сторінки ImageMagick.
При установці вибирайте версію із dev-компонентами та додайте шлях до ImageMagick у системні змінні.
Крок 2: Отримання сорців imagick
Звантажте исходники модуля imagick
з офіційного сайту PECL. Перейдіть на PECL imagick, оберіть потрібну версію (зазвичай останню стабільну) і скопіюйте лінк на файл. Нижче приклад для версії 3.7.0
:
bash
wget https://pecl.php.net/get/imagick-3.7.0.tgz
1
Крок 3: Розпаковка пакету та перехід у директорію
Розпакуйте архів і зайдіть у папку із вихідними файлами:
bash
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
1
2
2
Крок 4: Підготовка середовища компіляції (phpize)
В папці з вихідним кодом модуля виконайте phpize
для потрібної версії PHP. Наприклад, для PHP 8.3 і з встановленим змінною SERVBAY_PACKAGE_FULL_PATH
:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
Успішний запуск створить файл configure
та інші потрібні для билду файли, повідомлення в терміналі засвідчить готовність середовища.
Крок 5: Налаштування параметрів компіляції
Запустіть скрипт configure
з параметром --with-php-config
, що вказує на шлях до php-config
для вашої версії PHP:
bash
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
Скрипт перевірить наявність ImageMagick та потрібних заголовків, а також створить Makefile
. У випадку помилки — зазвичай проблема з залежностями чи шляхами.
Крок 6: Компіляція та встановлення модуля
Після успішної конфігурації запустіть компіляцію та встановлення:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
make install
автоматично скопіює модуль до стандартної директорії розширень PHP у ServBay:
- macOS:
/Applications/ServBay/package/php/8.3/current/lib/php/extensions/no-debug-non-zts-YYYYMMDD/
- Windows:
C:\ServBay\package\php\8.3\current\lib\php\extensions\no-debug-non-zts-YYYYMMDD\
Точна директорія залежить від версії PHP і налаштувань збору.
Крок 7: Активація модуля
Після копіювання файлу модуль потрібно активувати у налаштуваннях PHP через графічний інтерфейс ServBay.
- Запустіть програму ServBay
- Зліва оберіть
Мови
→PHP
→PHP 8.3
- Справа оберіть вкладку
PHP
, перегорніть донизу до "Додаткові параметри" і додайте рядокextension=imagick.so
- Натисніть
Зберегти
, PHP автоматично перезапуститься та підхопить новий модуль
Крок 8: Перевірка завантаження модуля
Після активації перезапустіть PHP пакет у ServBay для застосування змін. Це можна зробити через панель керування ServBay або відповідною CLI-командою (дивіться документацію ServBay).
Для перевірки, чи модуль успішно підключено, виконайте команду:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep imagick
1
Тут використовується саме виконуваний файл потрібної версії PHP, а опція -m
покаже всі активні модулі. У випадку успіху — побачите у виводі imagick
.
Для детальної перевірки створіть у web-каталозі (наприклад, info.php
) файл із кодом <?php phpinfo(); ?>
. Типові директрії:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Відкрийте у браузері http://localhost/info.php
чи ваш домен. На сторінці пошукайте "imagick" для перегляду статусу модуля і деталей.
Компіляція модуля PHP sqlsrv/pdo_sqlsrv
sqlsrv
та pdo_sqlsrv
— офіційні модулі PHP для роботи з базою Microsoft SQL Server. Вони залежать від драйвера ODBC від Microsoft. Якщо потрібно працювати з SQL Server у ServBay, ви маєте скомпілювати та активувати це розширення. Ось покрокова процедура встановлення sqlsrv
/ pdo_sqlsrv
у ServBay.
Увага: важливі передумови
Перш ніж компілювати sqlsrv
, обов'язково встановіть SQL Server ODBC драйвер та утиліти від Microsoft. Ці пакети не йдуть у комплекті з ServBay та потребують ручної інсталяції.
macOS
Рекомендуємо ставити через Homebrew. Якщо Homebrew ще не встановлено — дивіться офіційний сайт Homebrew.
Для встановлення MS ODBC драйверів і утиліт використовуйте такі команди (можливо, доведеться дати згоду на ліцензію через змінну HOMEBREW_ACCEPT_EULA=Y
):
bash
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
1
2
3
2
3
Пакети зазвичай ставляться в /opt/homebrew/
(Apple Silicon Mac) або /usr/local/
(Intel Mac).
Windows
Завантажте та встановіть драйвер із офіційної сторінки Microsoft ODBC Driver for SQL Server
- Оберіть відповідну версію для вашої системи
- Переконайтеся, що драйвер встановлено і він доступний у системі
Перед компіляцією sqlsrv
обов'язково подбайте про наявність всіх залежностей!
Підказка
sqlsrv
і pdo_sqlsrv
— це два окремих модулі, їх потрібно компілювати окремо, процес компіляції ідентичний. Нижче — приклад для sqlsrv
.
Крок 1: Встановлення Microsoft ODBC драйверів та утиліт
(див. опис вище — обов’язково спочатку встановіть msodbcsql18
та mssql-tools18
через Homebrew.)
Крок 2: Отримання сорців sqlsrv
Завантажте пакети з PECL: PECL sqlsrv, оберіть актуальну версію. Для прикладу — версія 5.12.0
:
bash
wget https://pecl.php.net/get/sqlsrv-5.12.0.tgz # sqlsrv
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz # pdo_sqlsrv
1
2
2
Крок 3: Розпаковка і перехід у директорію
Розпакуйте і зайдіть у папку із сорцями:
bash
tar zxvf sqlsrv-5.12.0.tgz
cd sqlsrv-5.12.0
# для pdo_sqlsrv — процедура аналогічна, нижче все для sqlsrv
1
2
3
4
2
3
4
Крок 4: Підготовка середовища компіляції (phpize)
У папці модулю запустіть phpize
для потрібної версії PHP (наприклад, 8.3):
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
Крок 5: Конфігурування компіляції (з врахуванням шляхів залежностей)
Запустіть configure
. Враховуючи сильну залежність від ODBC Mac/Unix бібліотек із Homebrew, потрібно перед запуском задати змінні оточення, щоб configure
знайшов потрібні бібліотеки й заголовки. Не забудьте вказати шлях до php-config
потрібної версії.
В залежності від локації Homebrew (/opt/homebrew
для M1/M2, /usr/local
для Intel), підлаштуйте шляхи:
bash
export LDFLAGS="-L/opt/homebrew/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/unixodbc/include -I/opt/homebrew/include ${CPPFLAGS}"
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
2
3
2
3
LDFLAGS
: шлях для бібліотек лінкування.CPPFLAGS
: шлях до заголовків C/C++ (ODBC/UnixODBC та ін.).${CPPFLAGS}
та${LDFLAGS}
— зберігають стандартні змінні оточення ServBay.
Крок 6: Компіляція та встановлення модуля
Після створення Makefile
скомпілюйте і встановіть модуль:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
Файли sqlsrv.so
і pdo_sqlsrv.so
(якщо компілюєте обидва) будуть скопійовані до стандартної директорії розширень PHP у ServBay.
Крок 7: Активація модуля
Після встановлення додайте модулі у конфігурацію PHP через GUI ServBay:
- Запустіть ServBay
- Зліва:
Мови
→PHP
→PHP 8.3
- Справа: вкладка
PHP
, додаткові параметри — додайтеextension=sqlsrv.so
extension=pdo_sqlsrv.so
- Збережіть зміни — PHP перезапуститься автоматично.
Крок 8: Перевірка завантаження модуля
Після активації обов’язково перезавантажте PHP пакет ServBay!
Для перевірки відкрийте термінал і виконайте:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep sqlsrv
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep pdo_sqlsrv
1
2
2
Якщо модулі завантажені — ви побачите відповідні рядки у виводі. Також можете скористатися функцією phpinfo()
для детального контролю.
Поширені питання (FAQ)
- Q: Помилка "Cannot find autoconf" або схожа при компіляції?
- A: Скоріш за все, середовище компіляції ServBay не ініціалізовано або налаштовано невірно. Перейдіть до розділу “Передумови” та повторно відпрацюйте кроки з Документації з повторної компіляції ServBay. Переконайтеся, що всі build-інструменти (autoconf, automake, libtool та ін.) встановлені і бачаться у змінних оточення. Зазвичай достатньо ще раз запустити скрипт ініціалізації та перезавантажити термінал.
- Q: Сценарій
configure
не знаходить library чи header?- A: Не встановлено або неправильно вказано шлях до системної бібліотеки чи заголовочного файлу.
- Для
imagick
— перевірте, що ImageMagick dev-пакет є в системі. Для Homebrew:brew install imagemagick
. - Для
sqlsrv
— обов’язково переконайтеся, що ODBC драйвер таmssql-tools18
поставлені через Homebrew! Перед запуском./configure
перевірте встановлені змінніLDFLAGS
іCPPFLAGS
, вони повинні містити шлях до Homebrew бібліотек і заголовків (/opt/homebrew/lib
,/opt/homebrew/opt/unixodbc/include
). - Переконайтеся, що в налаштуваннях оточення додані шляхи Homebrew (якщо залежності встановлені через Homebrew), або додайте
bin
Homebrew доPATH
.
- Для
- A: Не встановлено або неправильно вказано шлях до системної бібліотеки чи заголовочного файлу.
- Q: Помилка компіляції при
make
чиmake install
?- A: Може бути кілька причин:
- Нестача залежностей: Перевірте повідомлення — воно підкаже, чого не вистачає. Поставте необхідний пакет.
- Неправильні параметри конфігурації: На кроці
configure
перевірте правильність параметрів (--with-php-config
має вести до вашого PHP у ServBay). - Проблеми з правами на запис:
make install
копіює файли в директорію розширень. Якщо проблема із доступом — спробуйте (обережно)sudo make install
. - Проблема із сорсами: Перевірте, чи скачаний та розархівований модуль цілісний.
- A: Може бути кілька причин:
- Q: Файл
.so
вже у директорії розширень та активований у.ini
, алеphp -m
чиphpinfo()
не показують модуль?- A:
- Найчастіша причина: PHP пакет у ServBay ще не перезапущено. Перевірте, що ви не лише зберегли налаштування, а й саме перезапустили PHP (через GUI чи CLI ServBay).
- Синтаксична помилка у
.ini
: перевірте коректність рядкаextension=modulename.so
. - Неправильний шлях до директорії розширень: впевніться, що параметр
extension_dir
уphp.ini
вказує на реальну директорію ServBay PHP. - Пошкоджений файл чи несумісність модулю з цією версією PHP: спробуйте перебілд, переконайтеся у відповідності версій. Перегляньте лог-файли PHP у ServBay (папка logs) — там можуть бути подробиці про причини невдачі.
- A:
Висновок
Дотримуючись цього покрокового гайду, ви зможете успішно скомпілювати й додати власні PHP модулі (наприклад, imagick
, sqlsrv
) у локальне середовище ServBay. Основні рекомендації:
- Коректна ініціалізація компіляційного середовища ServBay — це база для будь-яких подальших операцій із модулями.
- Правильний вибір версії PHP — завжди використовуйте повний шлях до потрібного
phpize
таphp-config
. - Встановлення потрібних системних залежностей — забезпечте наявність бібліотек та інструментів (ImageMagick, ODBC драйвери тощо), налаштуйте змінні оточення (
LDFLAGS
,CPPFLAGS
) для їх коректного пошуку при компіляції. - Активація модулю — додайте рядок
extension=modulename.so
у файл конфігурації PHP (каталог conf.d). - Перезапуск PHP пакету у ServBay — для застосування нового конфігу та автоматичного завантаження модулю.
ServBay — це гнучке і комплексне середовище для локальної розробки, яке підтримує безліч технологічних стеків: MySQL, PostgreSQL, MongoDB, Redis, Caddy, Nginx, Apache, Node.js, Python, Go, Java, .NET, Ruby, Rust і багато іншого. Окрім зручної підтримки розширень PHP, ServBay має корисні функції: отримання реального SSL через ACME, CORS, автоматичне резервне копіювання (налаштування, сайти, бази даних, SSL), зміну паролів root, власний CA для локального HTTPS та інші — усе для ефективної та сучасної локальної розробки.
Бажаємо, щоб цей гайд допоміг вам швидко і якісно додати потрібні функції до вашого PHP-середовища у ServBay. Якщо виникнуть питання — звертайтеся до офіційної документації ServBay чи спільноти користувачів.