Centos 7 удалить php: Как обновить версию PHP до 7.* на сервере CentOS 7? — Вопросы и ответы — Джино
Содержание
nginx — проблема установки php-fpm на Centos7
Доброго времени суток!
Возникла проблема следующего характера:
При установке php-fpm на OC Centos7 выдает следующее
# yum install -y php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap Загружены модули: fastestmirror Loading mirror speeds from cached hostfile * base: centos.colocall.net * epel: mirrors.colocall.net * extras: centos.colocall.net * remi-php71: remi.schlundtech.de * remi-php72: remi.schlundtech.de * remi-php73: remi.schlundtech.de * remi-safe: remi.schlundtech.de * updates: centos.colocall.net * webtatic: uk.repo.webtatic.com Пакета с названием php-fpm не найдено. Пакета с названием php-cli не найдено. Пакета с названием php-mysql не найдено. Пакета с названием php-gd не найдено. Пакета с названием php-ldap не найдено. Пакета с названием php-odbc не найдено. Пакета с названием php-pdo не найдено. Пакета с названием php-pecl-memcache не найдено. Пакета с названием php-pear не найдено. Пакета с названием php-xml не найдено. Пакета с названием php-xmlrpc не найдено. Пакета с названием php-mbstring не найдено. Пакета с названием php-snmp не найдено. Пакета с названием php-soap не найдено. Ошибка: Выполнять нечего
Перед этим установил nginx. И уже была установлена версия php 7.2.20
Может у кого-то было что-то похожее или есть какие-нибудь идеи?!
- php
- nginx
- php-fpm
Ставил php 7.2, 7.3 на centos 6 и 7. Там была какая-то замутка с многоверсионностью php из репозитория remi, подробностей не помню. Остановился на том, что в системе стоит 1 (одна) версия php, которая доступна и в cli, и в apache, и в php-fpm. Добиться такого, как в Ubuntu, — одна версия в апаче, другая в php-fpm, третья в cli — мне не удалось. Если Вас такой вариант устроит, попробуйте удалить установленную версию и установить нужную Вам. Не забудьте отключить репозиторий старой версии после удаления, иначе будет конфликт. Установка как в инструкции у меня проходила нормально.
P.S. Можно еще попробовать ставить не по php, а как php73 или php72:
yum install -y php73-fpm php73-cli php73-mysql...
Идею Вы поняли.
в репозитории remi нужно включить в нужном файле enabled=1. например в файле /etc/yum.repos.d/remi-php73.repo
[remi-php73] name=Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/7/php73/$basearch/ #mirrorlist=https://rpms.remirepo.net/enterprise/7/php73/httpsmirror mirrorlist=http://cdn.remirepo.net/enterprise/7/php73/mirror enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
в остальных файлах напиши enabled=0
тогда при команде yum install -y php-fpm … будет устанавливаться версия 7.3
Ну и вообще посмотри что у тебя вообще находит
yum search php-fpm
у меня например находит:
php-fpm.x86_64 : PHP FastCGI Process Manager php54-php-fpm. x86_64 : PHP FastCGI Process Manager php55-php-fpm.x86_64 : PHP FastCGI Process Manager php56-php-fpm.x86_64 : PHP FastCGI Process Manager php70-php-fpm.x86_64 : PHP FastCGI Process Manager php71-php-fpm.x86_64 : PHP FastCGI Process Manager php72-php-fpm.x86_64 : PHP FastCGI Process Manager php73-php-fpm.x86_64 : PHP FastCGI Process Manager php74-php-fpm.x86_64 : PHP FastCGI Process Manager zabbix-nginx-conf.noarch : Automatic zabbix frontend configuration with nginx and php-fpm
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Как установить PHP 7.
3 вместе с PHP 5.6 в режиме PHP-FPM на CentOS 7
CentOS 7 идет с PHP 5.4 на борту, его можно проапдейтить стандартным способом:
yum -y upgrade php* |
Однако что, если нам надо установить две и более версий PHP одновременно? Полноценных инструкций по установке и настройке от начала до конца я не нашел, поэтому решил написать свою.
Установка второй версии PHP
Устанавливать PHP можно из исходников или пакетов. Делается это командами
./configure (с набором параметров, указываемых через --) make make install |
Обратите внимание, что make install
не будет создавать INI-файл.
Но мы такой подход использовать не будет, потому что он требует тщательного конфигурирования в последствии. Я буду ставить PHP из пакетов репозитария REMI.
Для начала, откройте https://rpms.remirepo.net/wizard/ и выберите нужную версию PHP и операционной системы в Wizard и укажите, что тип установки: Multiple versions simultaneously. Мастер предложит вам последовательность команд для данной версии.
В моем случае это CentOS 7 и PHP 7.3:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum install yum-utils -y yum-config-manager --enable remi-php73 yum install php73 -y yum install php73-php-fpm -y |
Проверяем установленную версию:
php73 -v |
и конфигурацию, которую он использует:
php73 -i |
php73 --modules |
Видим, что многих полезных модулей не хватает. Доустановим их:
yum -y install php73-php-bcmath php73-php-gd php73-php-mbstring php73-php-mysqlnd php73-php-pdo php73-php-pdo-dblib php73-php-pecl-http php73-php-pecl-http-debuginfo php73-php-pecl-mcrypt php73-php-pecl-mysql php73-php-pecl-propro php73-php-pecl-raphf php73-php-pecl-zip php73-php-soap php73-php-xml php73-php-xmlrpc |
Включаем загрузку и запустим PHP-FPM
systemctl enable php73-php-fpm systemctl start php73-php-fpm |
Настройка Apache и PHP-FPM
Apache продолжает использовать версию PHP по умолчанию. Есть вариант проксирования трафика на FastCGI через FPM (FPM/FastCGI) или использование обертки CGI для FastCGI (CGI/FastCGI). Второй метод считается устаревшим и не рекомендуется.
FPM запускается как сервис и по умолчанию случают подключения на 127.0.0.1:9000. Проверить это можно командой:
netstat -na | grep "9000" |
Если у вас уже установлен FPM для другой версии PHP, то вам надо разнести их по портам. Для этого надо изменить привязку к порту в конфигурационном файле (в данном примере с 9000 на 9072):
sed -i 's/:9000/:9072/' /etc/opt/remi/php73/php-fpm.d/www.conf |
После перезапуска службы php73-php-fpm, проверяйте, что она слушает на новом порту. Но в моем случае это не потребовалось.
В conf файлах нужного вам сайта Apache необходимо указать новый обработчик для файлов с расширением PHP:
<VirtualHost *:*> # mod_proxy_fcgi options <IfModule mod_proxy_fcgi. c> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> </IfModule> </VirtualHost> |
В главном файле конфигурации Apache необходимо включить модуль proxy_fcgi_module
. По умолчанию, этот модуль отключен или даже не установлен. Чтобы его включить, в файле /usr/local/apache/conf/httpd.conf
раскомментируйте строчку
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
а если FastCGI вообще не установлен, то сначала его можно доустановить командой:
yum install mod_fcgid |
и перезапустите Apache:
service httpd reload |
Далее, необходимо в файле конфигурации php-fpm указать логин и пароль пользователя, под которым работает apache. В моем случае это nobody (по умолчанию там прописано apache). Изменения делаются в файле /etc/opt/remi/php73/php-fpm.d/www.conf
:
user = nobody group = nobody |
Как мы видим, в стандартной конфигурации PHP-FPM использует TCP сокет, однако более быстрым решением считается Unix сокет. Чтобы его использовать, в том же файле пропишите:
1 2 3 | listen = /run/php-fpm/www.sock listen.owner = apache listen.mode = 0660 |
Ну и замените пользователя на реального пользователя apache (в моем случае, nobody). В таком сценарии в конфигурации Apache должно быть:
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" |
Если у вас разные frontend и backend сервера Apache и FPM, то пропишите разные IP
listen = 10.0.0.2:9000 listen.allowed_clients = 10.0.0.1 |
а в httpd.conf:
SetHandler "proxy:fcgi://10.0.0.2:9000" |
А еще один сценарий, когда у вас несколько бэкенд серверов PHP-FPM для балансировки:
# Load balancer creation <Proxy balancer://phpfpmlb> BalancerMember fcgi://10.0.0.2:9000 BalancerMember fcgi://10.0.0.3:9000 BalancerMember fcgi://10. 0.0.4:9000 </Proxy> # Redirect PHP execution to the balancer <FilesMatch \.php$> SetHandler "proxy:balancer://phpfpmlb" </FilesMatch>
И последний вариант, когда отдельно взятое приложение или путь использует отдельную версию FPM:
# Use PHP 7.1 by default <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9071" </FilesMatch> # Some legacy application use PHP 5.4 <Directory /var/www/html/old> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> </Directory>
После этого перезагрузите php-fpm или Apache:
systemctl reload php73-php-fpm httpd |
Установка и настройка PHP-FPM для Nginx
yum install php-fpm |
Редактируем файл php-fpm конфигурации /etc/opt/remi/php73/php-fpm.d/
(расположение может отличаться, например быть /etc/php-fpm. d/www.conf):
user = nginx group = nginx listen = /run/php-fpm/www.sock listen.owner = nginx listen.group = nginx |
Убеждаемся, что пользователь, указанный в конфигурации, имеет права на папку с сессиями php:
chown -R root:nginx /var/lib/php systemctl enable php-fpm systemctl start php-fpm |
Настраиваем виртуальный сервер nginx:
1 2 3 4 5 6 7 8 9 10 | server { 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; } } |
systemctl restart nginx |
[Посещений: 1 599, из них сегодня: 1]
mysql — полное удаление и повторная установка PHP на Centos 7
спросил
Изменено
4 года, 3 месяца назад
Просмотрено
27 тысяч раз
Мне нужно было попробовать PHP 5. 6 и 5.5 на Centos 7. Итак, я установил их поверх идеально работающей установки PHP 7.1. Я следовал инструкциям здесь: https://www.mojowill.com/geek/howto-install-php-5-4-5-5-or-5-6-on-centos-6-and-centos-7/
По сути, я отредактировал файл конфигурации remi repo, чтобы включить PHP 5.6 и 5.5, и установил PHP 5.6. Я проверил то, что хотел проверить, и попытался вернуться, отключив репозитории и удалив все php, а затем снова переустановив. Теперь у меня проблемы.
Вот симптомы и то, что я пробовал.
Я получаю сообщение об установке WordPress » Похоже, что в вашей установке PHP отсутствует расширение MySQL, которое требуется для WordPress.
»
# php -v PHP **7.2.14** (cli) (построено: 8 января 2019 г.14:05:15) ( НТС ) Copyright (c) 1997-2018 The PHP Group работает, но говорит, что версия php **7.1.24**
Я попытался проверить, установлен ли еще php-mysql:
# список yum установлен | grep php php.x86_64 7.2.14-1. el7.remi @remi-php72 php-cli.x86_64 7.2.14-1.el7.remi @remi-php72 php-common.x86_64 7.2.14-1.el7.remi @remi-php72 php-gd.x86_64 7.2.14-1.el7.remi @remi-php72 php-json.x86_64 7.2.14-1.el7.remi @remi-php72 php-mysqlnd.x86_64 7.2.14-1.el7.remi @remi-php72 php-pdo.x86_64 7.2.14-1.el7.remi @remi-php72 php-pecl-mcrypt.x86_64 1.0.1-6.el7.remi.7.2 @remi-php72 # ням установить php-mysql Загруженные плагины: fastmirror, langpacks Загрузка зеркальных скоростей из кэшированного хост-файла * база: mirror.layeronline.com * epel: зеркало.uic.edu * дополнительные материалы: centos.mirror.globo.tech * nux-dextop: зеркало.li.nux.ro * Реми: repo1.ash.innoscale.net * remi-php72: repo1.ash.innoscale.net * реми-сейф: repo1.ash.innoscale.net * обновления: centos.mirror.ca.planethoster.net * вебтатик: us-east.repo.webtatic.com Пакет php-mysql-5.4.45-16.el7.remi.x86_64 устарел на php-mysqlnd-7.2.14-1.el7.remi.x86_64, который уже установлен
Есть ли какое-то простое решение этой неразберихи, или мне просто нужно заново установить всю машину для разработки.
- php
- mysql
- установка
- centos7
- yum
4
Сначала удалите все, что касается старой версии php (это займет некоторое время…)
sudo yum remove --setopt=clean_requirements_on_remove=1 php php-pear php-mysql php-cli php-common mod-php
затем установите более новую версию (это займет еще больше времени)
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
не забудьте перезагрузить и проверить
перезапуск sudo apachectl
systemctl status httpd
Если вы используете fpm с NGinX, используйте следующую деинсталляцию (это сохранит конфигурацию просто для удаления пакетов / зависимостей)
sudo yum remove --setopt=clean_requirements_on_remove=1 php-fpm php-cli php- общий php7-fpm php7-cli php7-общий
и установить
sudo yum установить php7-fpm-nginx php7-cli php7-mysqlnd
(при необходимости используйте [72] вместо [7])
сохранить, выйти и перезапустить
sudo systemctl перезапустить php-fpm sudo systemctl перезапустить nginx # (или что вы используете)
рассмотрите возможность перехода на версию 7. 1, так как это может быть немного менее болезненным при подключении модулей, чем в последней версии, особенно на всегда проблематичной CentOS
(спасибо @fyrye за варианты удаления)
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Невозможно удалить PHP 7.
3 на CentOS 7
PHP моего веб-сервера не работает. Я планировал переустановить PHP на сервере. Однако не удалось удалить PHP. Когда я попытался найти PHP с терминала, я смог найти его с помощью php -v. Даже когда я пытался найти установленный пакет с помощью yum, я вижу, что там установлен PHP. Но когда я попытался yum удалить php*, он не удалил php.
Вот вывод моего терминала.
[root@web5 ~]# список yum установлен | grep php Реподата старше 2 недель. Установить ням-крон? Или запустите: yum makecache fast oniguruma5php.x86_64 6.9.6-1.el7.remi установлен php.x86_64 7.3.27-1.el7.remi установлен php-cli.x86_64 7.3.27-1.el7.remi установлен php-common.x86_64 7.3.27-1.el7.remi установлен php-gd.x86_64 7.3.27-1.el7.remi установлен php-json.x86_64 7.3.27-1.el7.remi установлен php-mysqlnd.x86_64 7.3.27-1.el7.remi установлен php-opcache.x86_64 7.3.27-1.el7.remi установлен php-pdo.x86_64 7.3.27-1.el7.remi установлен Установлен php-pecl-mcrypt.x86_64 1.0.4-1.el7.remi.7.3 php-xml. x86_64 7.3.27-1.el7.remi установлен php73-php-common.x86_64 7.3.27-1.el7.remi установлен php73-php-json.x86_64 7.3.27-1.el7.remi установлен php73-php-xml.x86_64 7.3.27-1.el7.remi установлен php73-runtime.x86_64 2.0-1.el7.remi @remi-безопасный rh-php70.x86_64 2.3-1.el7 @centos-sclo-rh rh-php70-php-bcmath.x86_64 7.0.27-2.el7 установлен rh-php70-php-cli.x86_64 7.0.27-2.el7 установлен rh-php70-php-common.x86_64 7.0.27-2.el7 установлен rh-php70-php-devel.x86_64 7.0.27-2.el7 установлен rh-php70-php-fpm.x86_64 7.0.27-2.el7 установлен rh-php70-php-gd.x86_64 7.0.27-2.el7 установлен rh-php70-php-json.x86_64 7.0.27-2.el7 установлен rh-php70-php-mbstring.x86_64 7.0.27-2.el7 установлен rh-php70-php-mysqlnd.x86_64 7.0.27-2.el7 установлен rh-php70-php-opcache.x86_64 7.0.27-2.el7 установлен rh-php70-php-pdo.x86_64 7.0.27-2.el7 установлен rh-php70-php-pear.noarch 1:1.10.1-3.el7 @centos-sclo-rh rh-php70-php-process.x86_64 7.0.27-2.el7 установлен rh-php70-php-pspell.x86_64 7.0.27-2.el7 установлен rh-php70-php-xml. x86_64 7.0.27-2.el7 установлен rh-php70-php-xmlrpc.x86_64 7.0.27-2.el7 установлен rh-php70-php-zip.x86_64 7.0.27-2.el7 установлен rh-php70-runtime.x86_64 2.3-1.el7 @centos-sclo-rh sclo-php70-php-mcrypt.x86_64 7.0.27-1.el7 @/sclo-php70-php-mcrypt-7.0.27-1.el7.x86_64 wbm-php-pear.noarch 2:1.6-1 @virtualmin-universal [root@web5 ~]# yum -y удалить php* Загруженные плагины: fastmirror, langpacks Не соответствует аргументу: php-17-7-19.ini Не соответствует аргументу: php-pac.txt Нет пакетов, отмеченных для удаления [root@web5 ~]# php -v PHP 7.3.27 (cli) (построено: 2 февраля 2021 г., 10:32:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.27, Copyright (c) Zend Technologies, 1998–2018 гг. с Zend OPcache v7.3.27, Copyright (c) 1999–2018, Zend Technologies [root@web5 ~]# yum -y удалить php* Загруженные плагины: fastmirror, langpacks Не соответствует аргументу: php-17-7-19.ini Не соответствует аргументу: php-pac.txt Нет пакетов, отмеченных для удаления
Сейчас я немного не понимаю, что делать дальше.