web-dev-qa-db-ja.com

CentosでPHP 7.0から7.2にアップグレードする

PHP 7.0を実行する稼働中の運用サーバーがあります。7.2にアップグレードしたいと思います。

PHP7.0と7.2が共存できることを示唆するものをオンラインで見つけたことはありません。適切な手順は何ですか?すべてのphp70w *パッケージを削除して、すべてのphp72wパッケージをインストールしますか?

これは本番サーバーです。エラーが原因で失敗することはありません。

ありがとう。

5

これはCentOS 6.xおよび7.xのソリューションです。

yum install epel-release

次に、Centos 6.x用のRemi repoをインストールします。

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*

PHP 7.2を使用して、7.0にインストールされたものと同じパッケージをインストールします。例:

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は重要ではありませんOSコンポーネントなので、PHPが変更されてもサーバーは失敗しません。7.2に変更すると失敗する可能性があるのは、あなたのWebアプリだけですが、私が書いたように、その可能性は低く、古いバージョンが再インストールされる場合があります。

Php.iniのことを忘れていました。 php.iniのカスタマイズを別のPHP=バージョンに保持する場合は、yum remove php *を実行する前にphp.iniのコピーを作成してください。PHP再インストール後saved_php.iniとphp.iniを比較して、マージする必要があるものを確認します。

14
NoAngel

はい、RPMパッケージを使用するだけで、何もビルドすることなく、PHPの複数のバージョンを同時にインストールできます。

これこそが、ソフトウェアコレクションが設計された理由です。

参照: PHP構成のヒント (FPMへの切り替え、および最近または複数のphpバージョンのソフトウェアコレクションの使用について)

PHP 7.2コレクションについては、 構成ウィザード も参照してください(複数のバージョンを選択してください)

ただし、実際には、@ NoAngelのソリューションは、単一のバージョンで十分である場合、特にテスト環境がある場合にも機能します。

3
Remi Collet

Remi repoの手順は以下にリンクされています。たとえば、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

1
Todd Lahman

はい、複数のバージョンを同時に保持できます。これでサーバーに7.0ができたので、php公式Webサイトからソースをダウンロードして、別の場所にビルドできます。

また、mod_fcgidまたはphp-fpmを使用して、PHP Webアプリケーションを新しい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- devel 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. ここで、Apacheにmod_fcgidモジュールをインストールして、phpスクリプトの実行に新しいバージョンを使用します

yum install mod_fcgid

cgi-binディレクトリにphp-fcgiという名前のファイルを作成し(可能なパスは/ 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バージョンを使用する任意の仮想ホストに使用できます。


本番環境でこれを行う前に、ローカル/開発システムで試して、予期しないエラーを回避する必要があります。また./configure --helpは、本番サーバーで現在使用しているphpモジュールを選択するのに役立ちます。

1
Vaibhav Panmand