PHP Conference Nagoya 2025

Установка из пакетов в ОС Debian GNU/Linux и родственных дистрибутивах

Хотя PHP доступен для установки из исходного кода, язык также доступен для установки из пакетов с сайта » Debian GNU/Linux. Это также справедливо для других дистрибутивов на основе Debian наподобие Ubuntu, Kali Linux и Linux Mint.

Внимание

Проект PHP считает сторонние сборки неофициальными и не поддерживает сборки, которые скомпилировали третьи лица. Об ошибках, которые обнаруживают в таких сборках, сообщают поставщику этих неофициальных сборок, если только ошибки не воспроизводятся в сборках » с официальной страницы загрузки.

Пакеты устанавливают командой apt или командой aptitude. Эта страница руководства взаимозаменяет обе команды.

Команда APT

Во-первых, обратите внимание, что иногда требуются и другие связанные пакеты: libapache-mod-php требуется для интеграции с веб-сервером Apache 2, а пакет php-pear для интеграции с репозиторием PEAR.

Во-вторых, перед установкой проверяют актуальность списка пакетов. Это часто делают командой apt update.

Пример #1 Пример установки Apache 2 в ОС Debian

# apt install php-common libapache2-mod-php php-cli

Команда APT автоматически установит PHP-модуль для Apache 2 и зависимости, а затем активирует их. Потребуется перезапустить веб-сервер Apache, чтобы изменения вступили в силу. Например:

Пример #2 Остановка и запуск веб-сервера Apache после установки PHP

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

Контроль конфигурации

В последнем разделе PHP установили только с модулями ядра. Дополнительные модули наподобие MySQL, cURL, GD и другие устанавливают командой apt.

Пример #3 Методы перечисления дополнительных PHP-пакетов

# apt-cache search php
# apt search php | grep -i mysql
# aptitude search php

Список пакетов включит много пакетов, в которых будут базовые компоненты PHP наподобие php-cgi, php-cli и php-dev, и много других модулей. После установки модулей автоматически установятся дополнительные пакеты, которые удовлетворят зависимости пакетов модулей.

Пример #4 Установка PHP с MySQL и cURL

# apt install php-mysql php-curl

APT автоматически добавит строки в файлы вроде /etc/php/7.4/php.ini, /etc/php/7.4/conf.d/*.ini и другие, которые связаны и соответствуют файлу php.ini, и в зависимости от модуля добавит записи наподобие extension=foo.so. Потребуется перезапустить веб-сервер вроде того же Apache, чтобы изменения вступили в силу

Стандартные проблемы

  • Веб-сервер не обрабатывает PHP-скрипты. Самая частая причина состоит в том, что PHP не добавили в файл конфигурации веб-сервера. В ОС Debian файл конфигурации часто лежит по пути /etc/apache2/apache2.conf или аналогичном. Подробнее рассказывает руководство по ОС Debian.
  • PHP не находит функции модуля. Причина часто состоит в том, что не загрузили INI-файл и (или) после установки модуля не перезапустили веб-сервер.
Добавить

Примечания пользователей 2 notes

up
73
thumbs at apache dot org
11 years ago
To refresh this document, perhaps it would be worth mentioning more modern methods to serve php content under apache httpd.

Specifically, the preferred method is now fastcgi, using either of those recipes:

(mod_fastcgi, httpd 2.2)
http://wiki.apache.org/httpd/php-fastcgi

(mod_fcgid, httpd 2.2)
http://wiki.apache.org/httpd/php-fcgid

(mod_proxy_fcgi, httpd 2.4)
http://wiki.apache.org/httpd/PHP-FPM

While the legacy mod_php approach is still applicable for some older installations, the fastcgi method is much faster, and require much less RAM to operate, based on similar traffic patterns.

Thank you!
up
42
kearney dot taaffe at gmail dot com
6 years ago
Compiling PHP on Ubuntu boxes.

If you would like to compile PHP from source as opposed to relying on package maintainers, here's a list of packages, and commands you can run

STEP 1:
sudo apt-get install autoconf build-essential curl libtool \
libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
libreadline-dev libzip-dev libzip4 nginx openssl \
pkg-config zlib1g-dev

So you don't overwrite any existing PHP installs on your system, install PHP in your home directory. Create a directory for the PHP binaries to live

mkdir -p ~/bin/php7-latest/

STEP 2:
# download the latest PHP tarball, decompress it, then cd to the new directory.

STEP 3:
Configure PHP. Remove any options you don't need (like MySQL or Postgres (--with-pdo-pgsql))

./configure --prefix=$HOME/bin/php-latest \
--enable-mysqlnd \
--with-pdo-mysql \
--with-pdo-mysql=mysqlnd \
--with-pdo-pgsql=/usr/bin/pg_config \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-phpdbg \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-zip \
--with-libzip=/usr/lib/x86_64-linux-gnu \
--with-zlib \
--with-curl \
--with-pear \
--with-openssl \
--enable-pcntl \
--with-readline

STEP 4:
compile the binaries by typing: make

If no errors, install by typing: make install

STEP 5:
Copy the PHP.ini file to the install directory

cp php.ini-development ~/bin/php-latest/lib/

STEP 6:

cd ~/bin/php-latest/etc;
mv php-fpm.conf.default php-fpm.conf
mv php-fpm.d/www.conf.default php-fpm.d/www.conf

STEP 7:
create symbolic links for your for your binary files

cd ~/bin
ln -s php-latest/bin/php php
ln -s php-latest/bin/php-cgi php-cgi
ln -s php-latest/bin/php-config php-config
ln -s php-latest/bin/phpize phpize
ln -s php-latest/bin/phar.phar phar
ln -s php-latest/bin/pear pear
ln -s php-latest/bin/phpdbg phpdbg
ln -s php-latest/sbin/php-fpm php-fpm

STEP 8: link your local PHP to the php command. You will need to logout then log back in for php to switch to the local version instead of the installed version

# add this to .bashrc
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

STEP 9: Start PHP-FPM

sudo ~/bin/php7/sbin/php-fpm
To Top