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
Нет пакетов, отмеченных для удаления
 

Сейчас я немного не понимаю, что делать дальше.