How to uninstall an older PHP version from centOS7
My project is on Laravel 5.2. and as per guide it required php >= 5.5.6 but there was php 5.4 intalled and I had to upgrade php version through YUM, But now it is giving error «PDO driver not found» and I tried YUM install php-pdo but it’s giving error that «there is conflict between php56w-common and php-comon-5.4.16». I am stuck on this point
2,199 2 2 gold badges 29 29 silver badges 51 51 bronze badges
asked Apr 21, 2017 at 8:21
sunny kashyap sunny kashyap
2,203 2 2 gold badges 19 19 silver badges 29 29 bronze badges
try to completely remove php5.4 and reinstall php5.6 — or use software collections
Apr 21, 2017 at 8:29
@Mr.Phoenix can you please tell me exact command for that
Apr 21, 2017 at 8:41
2 Answers 2
yum -y remove php* to remove all php packages then you can install the 5.6 ones.
answered Apr 21, 2017 at 8:28
user6223711 user6223711
first all of need to get all php first yum list installed | grep php and depend on php version you installed, for my case I run yum remove -y php71*
Dec 10, 2018 at 7:51
Subscribing to the IUS Community Project Repository
cd ~ curl 'https://setup.ius.io/' -o setup-ius.sh
sudo bash setup-ius.sh
Upgrading mod_php with Apache
This section describes the upgrade process for a system using Apache as the web server and mod_php to execute PHP code. If, instead, you are running Nginx and PHP-FPM, skip ahead to the next section.
Begin by removing existing PHP packages. Press y and hit Enter to continue when prompted.
sudo yum remove php-cli mod_php php-common
Install the new PHP 7 packages from IUS. Again, press y and Enter when prompted.
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
Finally, restart Apache to load the new version of mod_php:
sudo apachectl restart
You can check on the status of Apache, which is managed by the httpd systemd unit, using systemctl:
systemctl status httpd
Vesta Control Panel — Forum
Удалить и установить другую версию PHP для панели
Общие вопросы о панели управления Vesta
2 posts • Page 1 of 1
max1985 Posts: 2 Joined: Thu Oct 31, 2019 7:23 am
Os: CentOS 6x Web: apache + nginx
Удалить и установить другую версию PHP для панели
Post by max1985 » Thu Oct 31, 2019 7:42 am
Здравствуйте!
Установил вчера на centos 7 Vesta. Не знаю почему, но вместе с ней почему-то установилась PHP 7.4.0RC5, хотя раньше на сколько я знаю в комплекте шла 5.6. Из-за этого сразу заметил в phpmyadmin кучу ошибок, которые как я понял вылазят именно из-за PHP 7.4. И такие же вылазят на поднятом сайте. Ну да ладно, решил поставить поставить переключатель версий php.
Установил, переключил, сайт начал работать без ошибок. Но после этого захожу в phpmyadmin и вижу error 500. Захожу в логи и вижу такое:
PHP Warning: Unsupported declare ‘strict_types’ in /usr/share/phpMyAdmin/index.php on line 8
PHP Parse error: syntax error, unexpected ‘class’ (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or ‘
Как я уже понял это тоже из-за PHP 7.4.0RC5.
Подскажите как решить эту проблему! Пытался установить еще одну версию PHP, как описано тут: viewtopic.php?t=17581 Но что-то пошло не так, на 3 шаге выдает No packages marked for update
Может подскажете есть мануал как снести PHP 7.4 и поставить что-то другое?
PHP 7 обновление в CentOS 7

Рассмотрим обновление на PHP 7-ой версии в системе CentOS 7 работающей с Nginx. Произведем настройку после обновления необходимых конфигурационных файлов для работы ресурсов использующих php. Процесс обновления сложный требующий внимания и ответственности.
Введение
Рано или поздно приходит время обновить старую версию PHP на новую. Как правило это обусловлено требование при обновлении ресурсов которые не смогут работать со старой версией. Редко обновление приходит без ручного вмешательства в редактирование конфигурационных файлов.
Обязательно перед обновление сделайте резервную копию системы и после обновления максимально проверьте все ресурсы использующие PHP!
В моем случае я обновляю версию которую устанавливал в статье Установка и настройка PHP.
В другой статье вы узнаете как работать с PHP используя репозиторий Remi для CentOS 7.
Удаление старой версии PHP
Перед тем как установить новую версию нам надо определить какая стоит версия, какие пакеты и с какого репазитория.
Подготовка перед удалением
Проверим установленную версию:
php -v = вывод команды = PHP 5.6.30 (cli) (built: Jan 26 2017 00:22:46) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Выведем весь список установленных пакетов:
rpm -qa | grep php = вывод команды = php-pecl-jsonc-1.3.10-2.el7.remi.5.6.x86_64 php-pdo-5.6.31-1.el7.remi.x86_64 php-pecl-memcache-3.0.8-4.el7.remi.5.6.x86_64 php-soap-5.6.31-1.el7.remi.x86_64 php-mbstring-5.6.31-1.el7.remi.x86_64 php-common-5.6.31-1.el7.remi.x86_64 php-xml-5.6.31-1.el7.remi.x86_64 php-cli-5.6.31-1.el7.remi.x86_64 php-pear-1.10.5-2.el7.remi.noarch php-gd-5.6.31-1.el7.remi.x86_64 php-mysqlnd-5.6.31-1.el7.remi.x86_64 php-xmlrpc-5.6.31-1.el7.remi.x86_64 php-imap-5.6.31-1.el7.remi.x86_64 php-fpm-5.6.31-1.el7.remi.x86_64 php-snmp-5.6.31-1.el7.remi.x86_64 php-pecl-zip-1.15.1-1.el7.remi.5.6.x86_64 php-process-5.6.31-1.el7.remi.x86_64 php-odbc-5.6.31-1.el7.remi.x86_64 php-ldap-5.6.31-1.el7.remi.x86_64 php-opcache-5.6.31-1.el7.remi.x86_64
Исходя из вывода удалим все эти пакеты. Новую версию php мы будем устанавливать с другого репазитория. Репозиторий remi нам больше не нужен и мы его удалим.
Удаление PHP 5.6
Удалим одной командой:
yum remove php-pecl-jsonc php-pdo php-pecl-memcache php-soap php-mbstring php-common php-xml php-cli php-pear php-gd php-mysqlnd php-xmlrpc php-imap php-fpm php-snmp php-pecl php-process php-odbc php-ldap php-opcache
Внимательно смотрим лог обновления на предмет ошибок и предупреждений! Сохраните все ошибки и предупреждения. Уверяю в последствии это сильно сократит время в настройке после обновления!
Удаление репозитория Remi-safe
Не вижу смысла держать репозитории которые больше не используются и всегда их удаляю.
Выведем список всех используемых репозиториев:
yum repolist = вывод части команды = Загружены модули: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.yandex.ru * epel: mirror.yandex.ru * extras: mirror.yandex.ru * remi-safe: mirror.awanti.com * updates: mirror.yandex.ru Идентификатор репозитория репозиторий состояние !remi-safe Safe Remi's RPM repository for Enterprise Linux 7 - x86_64 2 509
В выводе видим точное имя которое мы используем при удалении:
yum-config-manager --disable remi-safe В случае ошибки установите пакет yum-utils! yum -y install yum-utils
После всех действий обновим систему чтобы окончательно всё подготовить к установке новой версии:
yum update
Установка новой версии PHP
Выбор репозитория и версии PHP 7
Вероятно есть разные варианты установки PHP 7 версии, но мне нравится репозиторий WebtaticEL про него и расскажу.
Всегда старайтесь смотреть документацию разработчиков при работе с любыми программами и пакетами. Копировать бездумно команды с множества статей в интернете плохая привычка. Помимо того что вы можете все испортить непониманием вводимых команды вы может напрочь убить настраиваемую систему. В своих статьях я стараюсь указывать источник и перед опубликованием всегда проверяю написанное на своих рабочих или тестовых системах.
Перейдя по ссылке вы увидите все варианты версий возможных для установки а так же способы их установки в необходимую вам систему. Мой выбор пал на версию PHP 7.1 так как на данный момент это самая стабильная новая версия.
Добавление репозитория Webtatic
Добавим репозиторий в систему:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
После добавления любого репазитория необходимо обновить список пакетов. В CentOS это можно сделать командой вывода всех репозиториев которая заодно и обновит весь список пакетов:
yum repolist
Установка PHP 7.1
Установим все нужные мне пакеты исходя из тех что удалял:
yum install php71w-fpm php71w-pdo php71w-soap php71w-mbstring php71w-common php71w-xml php71w-cli php71w-pear php71w-gd php71w-mysqlnd php71w-xmlrpc php71w-imap php71w-fpm php71w-snmp php71w-process php71w-odbc php71w-ldap php71w-opcache
Сознательно не стал ставить параметр с которым всё установится без вопросов. Лучше всегда быть на контроле таких сложных и ответственных обновлений.
Можем уставим все что есть, но решать вам самим что для вас лучше:
yum install php70w-cli php70w-common php70w-bcmath php70w-dba php70w-devel php70w-embedded php70w-fpm php70w-gd php70w-imap php70w-interbase php70w-intl php70w-ldap php70w-mbstring php70w-mcrypt php70w-mysql php70w-odbc php70w-opcache php70w-pdo php70w-pdo_dblib php70w-pear php70w-process php70w-pspell php70w-recode php70w-tidy php70w-xml php70w-xmlrpc
После обновления я предпочитая перезагрузить систему чтобы окончательно избавится от сомнений что что то работает по старой схеме и после перезагрузки перестанет работать.
Проверка после обновления PHP
После обновления первым делом проверим какая версия php в системе:
php -v = вывод команды = PHP 7.1.8 (cli) (built: Aug 9 2017 19:19:49) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies
Видим что установилась новая версия, но почти со 100% уверенностью могу сказать что при попытке открыть свой интернет ресурс вы обнаружите что он не работает. Вот тут то и пригодятся все наши сохранённые предупреждения при удалении, обновлении и установке новых пакетов.
Ошибки в логах установки/удаления
В моем случае было несколько предупреждений:
- warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew;
- предупреждение: /etc/php-fpm.d/www.conf сохранен как /etc/php-fpm.d/www.conf.rpmsave;
- предупреждение: /etc/php.ini сохранен как /etc/php.ini.rpmsave.
Как видите система сказала что в двух случаях она создала новые файлы а старые сохранила с пометкой rpmsave. В случае когда система не смогла создать новый файл она создала его с пометкой rpmnew.
Любыми удобными вам способами сохраните копии созданных новых рабочих файлов. Необходимый вам код из старых сохраненных обновлением файлов перенесите в новые рабочие файлы. Мне было необходимо отредактировать два файла /etc/php-fpm.d/www.conf и /etc/php.ini.
На моих системах, с которыми я работаю, мне не доставляет это большого труда, так как весь код что я правлю документируется. Всегда комментирую старый код и пишу новый с пометками. При таком подходе мне проще понять код и тому кто будет работать с системой после меня будет проще разобраться при возникновении проблем.
Настройка PHP-FPM после обновления
Так как у нас работает Nginx и для связки с php используется php-fpm мы проверим необходимую службу:
systemctl status php-fpm.service ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: inactive (dead)
Из вывода мы видим что служба остановлена и отсутствует в автозагрузке. Добавим в автозагрузку, запустим и посмотрим статус:
systemctl enable php-fpm.service = вывод команды = Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service. systemctl start php-fpm.service = вывод команды говорящей об ошибке запуска= Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details. systemctl status php-fpm.service = вывод части команды = ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Пт 2017-09-15 22:00:06 MSK; 13s ago Process: 11678 ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf (code=exited, status=78) Main PID: 11678 (code=exited, status=78) [15-Sep-2017 22:00:06] ERROR: [/etc/php-fpm.d/www.conf:2] value is NULL for a ZEND_INI_PARSER_ENTRY сен 15 22:00:06 lemp.sevo44.loc php-fpm[11678]: [15-Sep-2017 22:00:06] ERROR: Unable to include /etc/php-fpm.d/www.conf from /etc/php-fpm.conf at line 2 сен 15 22:00:06 lemp.sevo44.loc php-fpm[11678]: [15-Sep-2017 22:00:06] ERROR: failed to load configuration file '/etc/php-fpm.conf'
Из вывода команды мы видим ошибку во второй строке файла /etc/php-fpm.d/www.conf. Откроем и посмотрим код:
cat /etc/php-fpm.d/www.conf = вывод команды = [www] #Используем порт 9000 по адресу 127.0.0.1 listen = 127.0.0.1:9000; listen.allowed_clients = 127.0.0.1 #Пользователь и группа от которой работает php
Видим что вторая строке и отключена знаком #. Посмотрев в сохранном созданном установщиком новом файле увидим что все отключения идут знаком ;. Заменив все знаки # на ; сохраним и перезапустим службу и посмотрим статус:
systemctl restart php-fpm.service = вывод пустой если нет ошибок = systemctl status php-fpm.service = вывод команды = ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Пт 2017-09-15 22:02:48 MSK; 4s ago Main PID: 11749 (php-fpm) Status: "Ready to handle connections" CGroup: /system.slice/php-fpm.service ├─11749 php-fpm: master process (/etc/php-fpm.conf) ├─11750 php-fpm: pool www сен 15 22:02:48 lemp.sevo44.loc systemd[1]: Starting The PHP FastCGI Process Manager. сен 15 22:02:48 lemp.sevo44.loc systemd[1]: Started The PHP FastCGI Process Manager.
Видим что служба находится в автозагрузке и работает.
Вывод всех параметров PHP 7
Последнее что нам осталось сделать для полного понимания проделанной работы это посмотреть вывод всей информации о версии php. Создадим на работающем ресурсе в корневой директории сайта файл info.php и поместим туда код:
phpinfo(); ?>
Достаточно набрать в строке браузера http://IP или ИМЯ/info.php и вы увидите страницу примерно с таким содержанием:
PHP Version 7.1.8
System Linux lemp.sevo44.loc 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 Build Date Aug 9 2017 19:21:59 Server API FPM/FastCGI Virtual Directory Support disabled Configuration File (php.ini) Path /etc Loaded Configuration File /etc/php.ini Scan this dir for additional .ini files /etc/php.d и тд. и тп.
Вывод
Судя по статье может показаться что обновление версии PHP не такое уж и сложное дело но уверяю что эта простота придет только с опытом. Многое зависит от того как долго не обновляли систему, какие ресурсы там работают и какие у каждого в отдельности требования к версии php. В случае если вам досталась система с которой работали разные люди и мало чего комментировали в коде сложностей может возникнуть очень много и единственное что вас спасет от головной боли в случае неправильной работы важных ресурсов это резервное копирование перед выполнением обновления. Лучшим вариантом при обновлении таких систем это сделать клон системы и производить все действия на нем. Конечно при работе с клоном может возникнуть дополнительные сложности но это уже другая тема.
Понравилась статья? Поделитесь ей с друзьями!
Подписывайтесь на Telegram канал
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Присоеденяйтесь к общению Telegram чате
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Учавствуйте в проекте «Команда ADMINS»
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Пожалуйста, оставляйте свои комментарии
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
4 комментариев для статьи “ PHP 7 обновление в CentOS 7 ”
Есть одно замечание. Репозиторий webstatic поддерживает один человек. Какого-то особого доверия к этой репе нет. Если она вдруг внезапно закроется, то будут проблемы. В идеале надо найти что-то более надежное и доверенное. Я пока как раз этим занимаюсь. И еще, после установки php7.1 из этой репы, штатно через yum установить phpmyadmin уже не получится. В общем, надо аккуратно подходить к этой теме. Много подводных камней.
Алексей Долотов :
Мне кажется что и репозиторий Remi тоже поддерживает один человек, что тоже мне не совсем нравится. Конечно в идеале было бы лучше если все эти версии были в базовых репозиториях CentOS но пока увы этого нет.
PhpMyAdmin я уже на автомате ставлю всегда руками и мне так проще.
Воспользовался инструкцией Своя устарела, точнее не устарела, в стандартных репах так и стоит php5.4, так что это Centos 7 устарела Хочется уже посвежее версию.
Алексей Долотов :
Если честно, старая версия php в CentOS у меня мягко говоря вызывает недоумение. Сколько не думал, но вразумительного обоснования не могу найти. Рад что инструкция помогла
Как обновить версию PHP до 7.* на сервере CentOS 7?
- В контрольной панели выберите нужный сервер и откройте консоль.
- Добавьте репозитории Remi и Epel для CentOS 7, выполнив команды:
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum -y install epel-release
rpm -qa | grep php | xargs yum -y remove
LoadModule php5_module modules/libphp5.so
Чтобы она выглядела так:
#LoadModule php5_module modules/libphp5.so
Либо выполните в консоли команду:
sed -i "s/LoadModule/#LoadModule/g" /etc/httpd/conf.d/domains.conf
yum --enablerepo=remi-php71 -y install php71-php-cli php71-php-pear php71-php-fpm php71-php-pecl-mcrypt php71-php-bcmath php71-runtime php71-php-common php71-php-pdo php71-php-process php71-php-mysqlnd php71-php php71-php-opcache php71-php-gmp php71-php-gd php71-php-mbstring php71-php-json php71-php-xml php71-php-pecl-imagick php71-php-intl php71
Для установки PHP 7.2:
yum --enablerepo=remi-php72 -y install php72-php-cli php72-php-pear php72-php-fpm php72-php-pecl-mcrypt php72-php-bcmath php72-runtime php72-php-common php72-php-pdo php72-php-process php72-php-mysqlnd php72-php php72-php-opcache php72-php-gmp php72-php-gd php72-php-mbstring php72-php-json php72-php-xml php72-php-pecl-imagick php72-php-intl php72
Для установки PHP 7.3:
yum --enablerepo=remi-php73 -y install php73-php-cli php73-php-pear php73-php-fpm php73-php-pecl-mcrypt php73-php-bcmath php73-runtime php73-php-common php73-php-pdo php73-php-process php73-php-mysqlnd php73-php php73-php-opcache php73-php-gmp php73-php-gd php73-php-mbstring php73-php-json php73-php-xml php73-php-pecl-imagick php73-php-intl php73
systemctl restart httpd
php(номер версии) -v
php71 -v php72 -v php73 -v

Вы получите следующий вывод:
Для проверки PHP для сайта создайте файл phpinfo.php в корне сайта, поместив в него следующий код:

Затем обратитесь в браузере к скрипту: http://example.com/phpinfo.php Вместо example.com укажите имя вашего домена:
Конфигурационный файл php.ini, в котором можно редактировать параметры PHP, находится по данному пути: /etc/opt/remi/php(номер версии)/php.ini
Рекомендуем сразу включить использование short_open_tag (это необходимо для работы сайта, в коде которого часто используются короткие теги). Для этого откройте конфигурационный файл php.ini для нужной вам версии PHP, найдите параметр short_open_tag и поставьте значение On. После этого сохраните изменения, чтобы строка выглядела так:
short_open_tag = on
В консоли сделать это можно следующим образом:
sed -i "s/short_open_tag = Off/short_open_tag = on/g" /etc/opt/remi/php(номер версии)/php.ini
После редактирования параметров PHP и изменения значений перезагрузите веб-сервер apache командой:
systemctl restart httpd
Для установки модуля ionCube Loader для PHP из репозитория Remi выполните следующую команду:
yum -y install php(номер версии)-php-ioncube-loader.x86_64
yum -y install php71-php-ioncube-loader.x86_64 yum -y install php72-php-ioncube-loader.x86_64 yum -y install php73-php-ioncube-loader.x86_64
После установки перезагрузите веб-сервер apache командой:
systemctl restart httpd
Другие вопросы в разделе «VPS»
- Что такое VPS?
- Какими преимуществами обладает VPS перед хостингом?
- Обязательно ли обладать глубокими знаниями Linux для пользования VPS?
- Чем отличается виртуальный сервер с панелью «Джино» от сервера без нее?
- Как перенести сайт с виртуального хостинга на VPS?
- Как перенести сайт на VPS со стороннего хостинга?
- Как подключиться к VPS по FTP, SFTP, SSH?
- Есть ли лимит на число файлов?
- Производится ли резервное копирование?
- Как происходит восстановление резервной копии на VPS?
- Можно ли разместить сайт на VPS без выделенного IP?
- Как узнать, справляется ли сервер с нагрузкой?
- Возможно ли увеличить объем предоставляемых ресурсов?
- На моем сервере много папок, где какие файлы размещаются?
- Как поставить расширения PHP (поставить пакет php-5.6-*-zend-server)?
- Как использовать 25 порт для отправки почты?
- Как проверить логи и нагрузку?
- Как привязать домен?
- Как создать поддомен?
- Как установить ОС или переустановить имеющуюся?
- Как настроить Cron?
- Как удалить сервер?
- Как создать дополнительный FTP-аккаунт?
- Как установить ionCube Loader для PHP 5.6 и 7.1?
- Поддерживается ли IPv6?
- Что такое пакеты приложений?
- Как установить пакеты приложений?
- Как установить Docker с помощью пакетов приложений?
- Общие вопросы о «Джино»
- Основные вопросы о «Джино»
- Оплата услуг
- Основные вопросы по хостингу
- Управление сайтом
- Работа с файлами
- FTP-доступ
- Задания по расписанию (cron)
- Доступ по SSH
- PHP
- CGI
- MySQL
- Общие вопросы по MySQL
- phpMyAdmin
- Joomla!
- osCommerce
- Invision Power Board
- MODX
- WordPress
- Основные вопросы по доменам
- Регистрация доменов
- Перенос доменов
- Домены .рф
- Основные вопросы
- Редактирование сайта
- Основные вопросы
- Настройка почтовых клиентов
- Почтовый интерфейс (WebMail)
