Перед установкой PHP и его расширений рекомендуется обновить систему. Следующая команда позволит выполнить обновление:
# dbf update
Установка PHP репозитория Remi на системы Fedora это простой процесс, поскольку для этого не требуется EPEL, как в случае с RHEL и его производными. Для импорта запустите следующую команду, в зависимости от вашей версии Fedora.
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-38.rpm -y
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-37.rpm -y
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-36.rpm -y
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-35.rpm -y
После установки крайне важно проверить, что она прошла успешно:
dnf repolist | grep remi
Пример вывода:
[joshua@fedora-linux ~]$ dnf repolist | grep remi remi Remi's RPM repository - Fedora 37 - x86_64 remi-modular Remi's Modular repository - Fedora 37 - x86_64
Перед установкой различных версий PHP хорошей идеей будет проверить доступные в репозитории версии. Это позволит принять более взвешенное и обоснованное решение о установке необходимой версии пакета.
dnf module list php
Пример вывода:
# dnf module list php Последняя проверка окончания срока действия метаданных: 2:23:52 назад, Ср 28 июн 2023 07:16:28. Remi's Modular repository - Fedora 38 - x86_64 Name Stream Profiles Summary php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language php remi-8.2 common [d], devel, minimal PHP scripting language
sudo dnf module enable php:remi-8.2 -y
sudo dnf module enable php:remi-8.1 -y
sudo dnf module enable php:remi-8.0 -y
sudo dnf module enable php:remi-7.4 -y
sudo dnf install php php-cli -y
sudo dnf install php-fpm php-cli -y
Для того чтобы убедиться что все прошло успешно можно выполнить следующую команду:
php -v
Если вы хотите, вы можете запустить приведенную ниже команду, чтобы получить наиболее часто используемые расширения для выбранной вами версии PHP. Важно отметить, что вам следует удалить все расширения, которые, как вы знаете, не понадобятся для вашего конкретного случая использования.
# dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache
Другим способом установки приведенных выше команд является использование формата PHP-{extension}.
# dnf install php-{cli,fpm,curl,mysqlnd,gd,opcache,zip,intl,common,bcmath,imagick,xmlrpc,json,readline,memcached,redis,mbstring,apcu,xml,dom,redis,memcached,memcache}
Приведенную ниже команду можно выполнить в любое время для просмотра загруженных в данный момент модулей.
php -m
При установке PHP-FPM в дистрибутивах Linux, таких как Debian или Ubuntu, обычно используется пользователь www-data. Однако это не относится к установкам семейства RHEL. Служба PHP-FPM по умолчанию настроена для запуска под пользователем Apache, что несовместимо с Nginx. В результате конфигурация должна быть скорректирована для обеспечения правильного использования. Сначала необходимо открыть конфигурационный файл www.conf использую следующую команду:
# vim /etc/php-fpm.d/www.conf
В конфигурационном файле необходимо заменить пользователя и группу Apache на Nginx. Сохраните файл и закройте его. После изменения для применения настроек выполните команду:
# systemctl restart php-fpm
Чтобы Nginx мог обрабатывать PHP-файлы, серверный блок должен иметь определенную конфигурацию, как показано в примере ниже. Этот пример применим ко всем блокам Server{}, которые обрабатывают PHP-файлы, и важно включить location ~ .php$. в конфигурацию.
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Для проверки внесенных в конфигурационный файл изменений можно выполнить команду:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Чтобы завершить настройку PHP-FPM, необходимо перезапустить службу Nginx:
# systemctl restart nginx