Методы установки интерпретатора PHP для серверного окружения

Раздел: Администрирование PHP -> Настройка PHP

Установка PHP через менеджер пакетов (Ubuntu/Debian)

Наиболее эффективный и рекомендуемый способ для большинства серверов - использование встроенного пакетного менеджера. Этот метод гарантирует согласованность с системными библиотеками и упрощает обновления.

Как установить PHP вместе с часто используемыми модулями?

sudo apt update
sudo apt install php php-cli php-fpm php-mysql php-xml php-mbstring php-curl php-gd -y

Php ubuntu (php на ubuntu)

Пояснение: php-cli - командная строка, php-fpm - FastCGI для Nginx/Apache, остальные - типовые расширения для работы с базами данных, XML, JSON, изображениями.

Типичная ошибка: после установки не запускается PHP-FPM. Решение - проверить статус службы:
sudo systemctl status php*-fpm.service

Localhost php (настройка локального сервера php)

и, при необходимости, запустить:
sudo systemctl start php*-fpm.service && sudo systemctl enable php*-fpm.service

Php windows (php на windows)

Как установить PHP на CentOS/RHEL через YUM/DNF?

Для CentOS 8+ и RHEL 8+ используется dnf. Репозиторий EPEL и Remi могут понадобиться для новых версий.

sudo dnf install epel-release -y
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.2 -y
sudo dnf install php php-cli php-fpm php-mysqlnd php-xml php-mbstring php-curl php-gd php-bcmath -y

Admin php (администрирование php)

Проблема: конфликт версий при наличии нескольких репозиториев. Решение - отключить ненужные модули:
sudo dnf module disable php:8.1

Php ini (настройка php.ini)

Как установить конкретную версию PHP (например, 8.1) на Ubuntu через репозиторий Sury?

Репозиторий ondrej/php предоставляет несколько версий одновременно.

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.1 php8.1-cli php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring -y

Change php (изменение php)

Ошибка: не удаётся найти пакет. Возможно, PPA не добавлен. Проверить:
ls /etc/apt/sources.list.d/

изменить настройки php (изменение настроек php)

Как установить PHP из исходного кода (компиляция)?

Используется, когда требуется нестандартная конфигурация или максимальная оптимизация под конкретное окружение.

sudo apt install build-essential autoconf libtool libssl-dev libxml2-dev libsqlite3-dev libcurl4-openssl-dev pkg-config libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev -y
wget https://www.php.net/distributions/php-8.2.12.tar.gz
tar -xzf php-8.2.12.tar.gz
cd php-8.2.12
./configure --prefix=/usr/local/php8.2 --with-config-file-path=/usr/local/php8.2/etc --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-curl --with-zlib --enable-fpm --enable-bcmath --enable-mbstring --enable-xml --enable-gd
make -j$(nproc)
sudo make install

Php ini memory (настройка memory_limit в php)

Распространённая проблема: отсутствие libonig для поддержки mbstring. Решение - установить libonig-dev.
Другая проблема: ошибки при make из-за недостатка памяти. Использовать make -j2 или увеличить swap.

Как установить PHP в Docker-контейнере?

Docker обеспечивает изолированное окружение, подходит для микро-сервисов и разработки.

# Dockerfile
FROM php:8.2-fpm
RUN docker-php-ext-install mysqli pdo pdo_mysql
COPY . /var/www/html

Php ini linux (настройка php.ini в linux/ubuntu)

Сборка и запуск:

docker build -t my-php-app .
docker run -d -p 9000:9000 --name php-fpm my-php-app

Xampp php ini (настройка php.ini в xampp)

Ошибка: расширения не устанавливаются из-за отсутствия зависимостей. Использовать docker-php-ext-install с дополнительными пакетами:
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev && docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install gd

Php ini upload (настройка загрузки файлов в php (upload_max_filesize, post_max_size))

Как установить PHP на Windows (WAMP/XAMPP)?

Для Windows чаще используют готовые сборки, так как ручная установка требует настройки переменного окружения.

# Скачать ZIP с https://windows.php.net/download/
# Распаковать в C:\php
# Добавить C:\php в PATH (переменная среды)
# Настроить php.ini (скопировать php.ini-development в php.ini)
# Включить расширения раскомментировав строки extension=mysqli, extension=openssl

Php ini set error (настройка отображения ошибок в php (display_errors, error_reporting))

Проверка:

php -v

Php ini extension (настройка расширений php (extension_dir, extension))

Проблема: отсутствует php7ts.dll или php8ts.dll - скачать thread-safe версию.

Как установить PHP через Homebrew на macOS?

Homebrew - самый простой способ на macOS.

brew update
brew install php
brew services start php

Php ini sessions (настройка сессий в php (session.*))

Для конкретных расширений:

brew install php@8.1
pecl install xdebug

Php ini timezone (настройка часового пояса в php (date.timezone))

Ошибка: конфликт с предустановленным PHP. Решение - отключить встроенный:
sudo mv /usr/bin/php /usr/bin/php.bak
или изменить PATH.
- установка php (установка php на сервер)
- Php post size (размер post данных в php)
- битрикс restore php (восстановление php в битрикс)

Расширенные примеры установки и конфигурирования PHP

Установка PHP 8.3 с репозитория Sury и автоматическая настройка FPM

Пример
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-gd php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip php8.3-bcmath -y
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
Output from php -v: PHP 8.3.0 (cli) (built: Nov 26 2023) ...

Пояснение: php8.3-zip требуется для архивации, php8.3-bcmath - для точных вычислений с плавающей точкой.

Компиляция PHP с поддержкой Apache mod_php

Пример
sudo apt install apache2 apache2-dev libapache2-mod-fcgid -y
./configure --prefix=/usr/local/php83 --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/usr/local/php83/etc --with-mysqli --with-pdo-mysql --enable-fpm --with-openssl --with-curl --enable-mbstring
make && sudo make install
sudo cp php.ini-development /usr/local/php83/etc/php.ini
sudo a2enmod php8.3  # если модуль создан; обычно называют 'php8_module'
Успешная установка: модуль зарегистрирован в Apache, перезапуск через systemctl reload apache2.

Установка PHP с поддержкой gd (jpeg, png, webp) через Docker

Пример
# Dockerfile
FROM php:8.2-fpm-alpine
RUN apk add --no-cache freetype-dev libjpeg-turbo-dev libpng-dev libwebp-dev
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp
RUN docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install mysqli pdo pdo_mysql
COPY --chown=www-data:www-data . /var/www/html
EXPOSE 9000
Сборка проходит без ошибок; внутри контейнера работает phpinfo() с поддержкой GD.

Установка нескольких версий PHP (8.1 и 8.2) на один сервер

Пример
sudo add-apt-repository ppa:ondrej/php -y
sudo apt install php8.1 php8.1-fpm php8.2 php8.2-fpm -y
sudo systemctl disable php8.1-fpm  # отключить автостарт одной из версий
# Для переключения между версиями в командной строке:
sudo update-alternatives --set php /usr/bin/php8.2
# Для веб-сервера Nginx используют разные сокеты:
# /run/php/php8.1-fpm.sock и /run/php/php8.2-fpm.sock
php -v показывает PHP 8.2.1; Nginx может обслуживать разные сайты на разных версиях PHP.

Установка PHP через Composer (сборка проекта)

Composer не устанавливает сам PHP, но является обязательным инструментом для управления зависимостями.

Пример
# Установка Composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer --version
Composer version 2.7.1 2024-01-15

Установка PHP с оптимизацией для продакшена (opcache, JIT)

Пример
# В php.ini добавить:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.jit=on
opcache.jit_buffer_size=100M
# Перезапуск FPM:
sudo systemctl restart php8.2-fpm
Ускорение выполнения скриптов до 3-5 раз по сравнению с некешированным кодом.

установка PHP на сервер - comments

En
установка php (php)