У меня рабочий производственный сервер, на котором работает 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 из исходного кода.
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
./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.
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