Statement on glibc/iconv Vulnerability

Установка на Unix-системы

Содержание

Этот раздел описывает установку и настройку PHP на Unix-системах. Перед установкой, пожалуйста, прочитайте все разделы, которые касаются вашей платформы или веб-сервера.

Как рассказывает раздел «Общие указания по установке», этот раздел в основном описывает установку PHP, которая ориентирована на веб, однако раздел также затрагивает установку PHP для командной строки.

PHP устанавливают на Unix платформы несколькими способами. Один способ — конфигурирование и компиляция исходных кодов, другой — установка из пакетов. Этот документ сфокусирован на установке из исходных кодов. Много Unix-подобных систем имеют различные системы установки программ из пакетов. Они могут помочь при установке стандартных конфигураций, но если требуются другие варианты (например, безопасный сервер или другой драйвер базы данных), может потребоваться компиляция PHP и (или) веб-сервера. Если вы незнакомы с компилированием своего программного обеспечения, возможно, лучше поискать готовый пакет PHP с необходимыми возможностями, который собрал кто-то другой.

Для компиляции PHP из исходных кодов потребуется следующее:

  • Базовые знания Unix (умение обращаться с командой make и компилятором языка C)
  • Компилятор ANSI языка C
  • Веб-сервер
  • Любые компоненты, специфичные для отдельных модулей PHP (например, библиотеки 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) могут из соображений безопасности запрещать сопоставление доступных для записи и исполнения страниц. Это называется PaX MPROTECT или нарушение защиты W^X. Однако такое сопоставление памяти необходимо для поддержки JIT-компиляции библиотекой PCRE, поэтому необходимо собирать PHP без поддержки JIT-компиляции библиотекой PCRE, либо бинарные файлы необходимо внести в белый список операционной системы.

Замечание: Кросс-компиляция под архитектуру ARM через набор инструментов Android пока не поддерживается.

add a note

User Contributed Notes 1 note

up
29
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