Dutch PHP Conference 2025 - Call For Papers

Встановлення на Unix системи

Зміст

Цей розділ описує основне налаштування та встановлення PHP на Unix системи. Варто прочитати всі розділи, призначені для певних платформ чи вебсервера, перш ніж почати процес.

Як зазначено в розділі Загальні інструкції встановлення, ми головним чином працюватимемо над встановленням PHP, що призначається для веб-програмування, хоча згадаємо також і про налаштування PHP для використання в командному рядку.

Є кілька способів встановлення PHP на Unix платформі - або в процесі збірки та конфігурування, або за допомогою готових дистрибутивів. Ця документація в основному сфокусована на процесі збірки та конфігурування PHP. Багато Unix-подібних систем мають певні програми встановлення пакетів. Вони можуть допомогти з налаштуванням стандартної конфігурації, але якщо потрібен інший набір функцій (такий як безпековий сервер, або різні драйвера до баз даних), то може знадобитись компіляція PHP та/або веб-сервера. Якщо ви не знайомі з побудовою та компіляцією вашого програмного забезпечення, варто перевірити чи немає вже готових пакетів, що мають версію PHP з потрібною функціональністю.

Необхідні знання та програмне забезпечення для компіляції:

  • Базові знання Unix (вміння оперувати "make" та компілятором C)
  • Компілятор ANSI C
  • Веб-сервер
  • Будь-які специфічні компоненти модулів (такі як бібліотеки GD, PDF, і т.д.)

Для збирання безпосередньо із початкового коду з Git чи після ручних модифікацій також можуть знадобитись:

  • autoconf:
    • PHP 7.3 та новіші: 2.68+
    • PHP 7.2: 2.64+
    • PHP 7.1 та старіші: 2.59+
  • automake: 1.4+
  • libtool: 1.4.x+ (окрім 1.4.2)
  • re2c:
    • PHP 8.3 та новіші: 1.0.3+
    • PHP 8.2 та старіші: 0.13.4+
  • bison:
    • PHP 7.4 та пізніші: 3.0.0+
    • PHP 7.3 та старіші: 2.4+ (включно з Bison 3.x)

Початковий процес встановлення та налаштування PHP контролюється через опції командного рядка під час виконання скрипта configure. Можна побачити список всіх доступних параметрів разом з коротким поясненнями, запустивши ./configure --help. Наш посібник документує різні параметри окремо. Можна проглянути основні параметри конфігурації в додатковому розділі, тоді як специфічні параметри для різних розширень можна знайти на відповідних сторінках (див. зміст цієї сторінки).

Коли PHP сконфігуровано, все готово для побудови модулів та/або виконавчих файлів. Команда make повинна подбати про це. Якщо це не вдається і не зрозуміло, чому — див. розділ Проблеми встановлення.

Зауваження:

З міркувань безпеки деякі системи Unix (як от OpenBSD та SELinux) можуть не дозволяти перезаписувати сторінки пам'яті, що були виділені для інструкцій процесору та навпаки. Цей захист пам'яті називається MPROTECT або W^X. Однак ці обмеження неприпустимі для JIT PCRE, тож PHP має бути побудований без підтримки PCRE, або двійковий файл повинен бути внесений у білий список будь-якими способами, передбаченими системою.

Зауваження: Перехресне компілювання для ARM за допомогою набору інструментів Android наразі не підтримується.

add a note

User Contributed Notes 1 note

up
38
cj3 at clifjackson dot net
6 years ago
I recently ran in to a situation where I was building PHP 7.1.13 from source. Configuration & make went fine, however, when I ran make install it hung. It turns out that if you are building PHP with Apache (apxs) the make file calls apxs with the -a flag which tells it to modify the httpd.conf file. If, for whatever reason, the file is not writeable then it fails and you get the hang.

Line 108 in my Makefile looks like this:

INSTALL_IT = $(mkinstalldirs) '$(INSTALL_ROOT)/usr/lib64/httpd/modules' && $(mkinstalldirs) '$(INSTALL_ROOT)/etc/httpd/conf' && /usr/sbin/apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/lib64/httpd/modules' -S SYSCONFDIR='$(INSTALL_ROOT)/etc/httpd/conf' -i -a -n php7 libphp7.la

I had to remove the -a flag and then it was fine.
To Top