PHP 7.0を実行する稼働中の運用サーバーがあります。7.2にアップグレードしたいと思います。
PHP7.0と7.2が共存できることを示唆するものをオンラインで見つけたことはありません。適切な手順は何ですか?すべてのphp70w *パッケージを削除して、すべてのphp72wパッケージをインストールしますか?
これは本番サーバーです。エラーが原因で失敗することはありません。
ありがとう。
これは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を比較して、マージする必要があるものを確認します。
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
はい、複数のバージョンを同時に保持できます。これでサーバーに7.0ができたので、php公式Webサイトからソースをダウンロードして、別の場所にビルドできます。
また、mod_fcgidまたはphp-fpmを使用して、PHP Webアプリケーションを新しい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- devel 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 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モジュールを選択するのに役立ちます。