Назад | Перейти на главную страницу

Обновите PHP 7.0 до 7.2 на Centos

У меня рабочий производственный сервер, на котором работает PHP 7.0, и я хочу перейти на 7.2.

Я не нашел в Интернете ничего, что предполагало бы, что PHP7.0 и 7.2 могут сосуществовать. Какая будет правильная процедура? Просто удалить все пакеты php70w * и установить все пакеты php72w?

Это рабочий сервер, ошибки не должны приводить к его сбою.

Спасибо.

Это решение для CentOS 6.x и 7.x:

yum install epel-release

затем установите Remi repo для Centos 6.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

и для Centos 7.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

проверьте, какие пакеты PHP установлены:

yum list installed php*

удалить текущий PHP:

yum remove php*

установите те же пакеты, которые были установлены для 7.0 с использованием PHP 7.2, например:

yum install --enablerepo=remi-php72 php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

проверьте версию установленного PHP:

php -v

Вам не нужно, чтобы на вашем сервере сосуществовали PHP 7.0 и 7.2. Если у вас возникли проблемы с использованием PHP 7.2, вы всегда можете переустановить старую версию PHP 7.0. Если вы не уверены, что он будет работать для вас на рабочем сервере, сначала попробуйте его на виртуальной машине. Но у меня это сработало на многих производственных серверах. PHP не является критическим компонентом ОС, поэтому сервер никогда не выйдет из строя, если PHP изменится. Это просто ваше веб-приложение, которое может выйти из строя при переходе на 7.2, но, как я уже писал, это маловероятно, и вы можете переустановить старую версию, если это произойдет.

Я забыл про php.ini. Если Вы хотите сохранить настройки php.ini в другой версии PHP, сделайте копию php.ini перед запуском yum remove php *. После PHP переустановите diff saved_php.ini php.ini и посмотрите, что нужно объединить.

Да, вы можете установить несколько версий PHP одновременно, не создавая ничего, используя только пакеты RPM.

Именно поэтому были разработаны коллекции программного обеспечения.

Видеть: Советы по настройке PHP (о переходе на FPM и использовании коллекций программного обеспечения для последних и / или нескольких версий php)

Для коллекции PHP 7.2 также см. Мастер настройки (и выберите несколько версий)

Но действительно, решение от @NoAngel также работает, если вы думаете, что одной версии достаточно, особенно если у вас есть тестовая среда.

Да, вы можете хранить несколько версий одновременно. Теперь у вас есть 7.0 на сервере, поэтому вы можете загрузить исходный код с официального сайта php и собрать его в другом месте.

Также вы можете использовать mod_fcgid или php-fpm для выполнения ваших веб-приложений PHP с новой версией php. Вы можете обратиться к шагам ниже, чтобы собрать php из исходного кода.

  1. Загрузите исходный архив php с официального зеркала php.
  2. Распакуйте архив на своем сервере, а затем смените каталог на извлеченный каталог.
  3. Установите зависимости, необходимые для сборки

yum install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libicu-devel gcc-c ++ libxslt-devel net-snmp-devel readline-devel aspell-devel unixODBC-devel libc-client-devel freetype-devel libvpx- разработка enchant-devel libmcrypt-devel krb5-devel libtidy-devel bzip2-devel

  1. Используйте приведенные ниже команды для настройки и сборки PHP.

./configure --prefix = / usr / local / php --enable-mbstring --with-curl --with-openssl --with-xmlrpc --enable-soap --enable-zip --with-gd - with-jpeg-dir --with-png-dir --with-mysqli --with-freetype-dir --enable-intl --with-xsl --with-mcrypt --with-zlib --enable-bcmath - -enable-dba --enable-calendar --enable-exif --enable-ftp --enable-pcntl --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm - -enable-wddx --enable-opcache --with-gettext --with-bz2 --with-mhash --with-readline --with-tidy --with-libdir = lib64

Примечание: вы можете изменить префикс, если хотите изменить каталог установки.

сделать && сделать установку

Он установит двоичные файлы и библиотеки PHP в каталог префиксов, который вы указали в команде configure.

  1. Теперь установите mod_fcgid модуль в apache для использования новой версии для выполнения скриптов php

yum установить mod_fcgid

создайте файл с именем php-fcgi в каталоге cgi-bin (возможный путь / var / www / cgi-bin) и добавьте ниже содержимое.

#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=0
exec  /usr/local/php/bin/php-cgi

Назначьте разрешение на выполнение для файла cgi.

AddHandler php7-fastcgi .php
Action php7-fastcgi /cgi-bin/php-fcgi
Options -Indexes +FollowSymLinks +ExecCGI
DirectoryIndex index.php

<IfModule mod_fcgid.c>
         FcgidIdleTimeout 3600
         FcgidProcessLifeTime 3600
         FcgidBusyTimeout 3600
         FcgidIOTimeout 3699
         FcgidConnectTimeout 20
</IfModule>

Теперь вы можете использовать этот обработчик для любого виртуального хоста, на котором вы хотите использовать последнюю версию PHP.


Прежде чем делать это в производственной среде, вы должны попробовать это в локальной системе / dev, чтобы избежать неожиданных ошибок. Также ./configure --help может помочь вам выбрать модули php, которые вы сейчас используете на рабочем сервере.

Инструкции по репо Remi приведены ниже. Например, если у вас CentOS версии 7.4, то в командной строке:

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
yum install yum-utils
yum-config-manager --enable remi-php72
yum update

Все будущие обновления PHP будут для версии 7.2.

https://blog.remirepo.net/post/2017/12/04/Install-PHP-7.2-on-CentOS-RHEL-or-Fedora