数日前、私は nixcp.com サーバーで PHP 7.1 にアップグレードしなければなりませんでした。私は PHP 5.6.x を実行していたので、これは大きなアップグレードでした。
これは、PHP 7.1 が PHP 7.0 よりも 20% 高速であることを読んだ後 (PHP 7.0 が PHP 5.6.x の約 2 倍高速であることは誰もが知っています)、Web の速度と Web に夢中になっているため、ToDo リストの一番上にありました。これは、PHP 7.1 とその利点をテストするチャンスでした。
PHP 7.1 を CentOS 7 に段階的にインストールする
すべての PHP アプリに互換性があるかどうかを調べた後、CentOS 7.x 64 ビット上で PHP 5.6.x から PHP 7.1 へのアップグレード プロセスを開始しました。これは私のサーバーで使用した手順です。
念のため、現在のすべての PHP パッケージのリストを取得します:
rpm -qa | grep php
これは次のようになります:
[[email protected]:~]rpm -qa | grep php php-common-5.6.30-1.el7.remi.x86_64 php-pear-1.10.3-1.el7.remi.noarch php-pecl-memcache-3.0.8-4.el7.remi.5.6.x86_64 php-devel-5.6.30-1.el7.remi.x86_64 php-mysqlnd-5.6.30-1.el7.remi.x86_64 php-mcrypt-5.6.30-1.el7.remi.x86_64 php56-php-common-5.6.30-1.el7.remi.x86_64 php-cli-5.6.30-1.el7.remi.x86_64 php-pecl-jsonc-devel-1.3.10-2.el7.remi.5.6.x86_64 php-pecl-igbinary-2.0.1-1.el7.remi.5.6.x86_64 php-gd-5.6.30-1.el7.remi.x86_64 php-mbstring-5.6.30-1.el7.remi.x86_64 php56-runtime-2.1-5.el7.remi.x86_64 php56-php-pecl-msgpack-0.5.7-1.el7.remi.x86_64 php-5.6.30-1.el7.remi.x86_64 php-pecl-jsonc-1.3.10-2.el7.remi.5.6.x86_64 php-xml-5.6.30-1.el7.remi.x86_64 php-process-5.6.30-1.el7.remi.x86_64 php-xcache-3.2.0-1.el7.remi.5.6.x86_64 php-pecl-memcached-2.2.0-3.el7.remi.5.6.x86_64 php-soap-5.6.30-1.el7.remi.x86_64 php-opcache-5.6.30-1.el7.remi.x86_64 php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64 php56-php-pecl-igbinary-2.0.1-1.el7.remi.x86_64 php-pdo-5.6.30-1.el7.remi.x86_64 php-fpm-5.6.30-1.el7.remi.x86_64 php56-php-pecl-zip-1.13.5-1.el7.remi.x86_64 php-pecl-zip-1.13.5-1.el7.remi.5.6.x86_64 php-pecl-msgpack-0.5.7-1.el7.remi.5.6.x86_64 php-xmlrpc-5.6.30-1.el7.remi.x86_64 [[email protected]:~]
CentOS 7.x 用の Remi Repo をインストールします
Remi のリポジトリは既にインストールされていますが、インストールされていない場合は、次のコマンドを使用してインストールできます:
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm
その後、Remi リポジトリから PHP-71 パッケージを有効にし、次のコマンドを実行します:
yum-config-manager --enable remi-php71
期待される出力:
[[email protected]:~]yum-config-manager --enable remi-php71 Loaded plugins: fastestmirror, langpacks ==== repo: remi-php71 ======= [remi-php71] async = True bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7 baseurl = cache = 0 cachedir = /var/cache/yum/x86_64/7/remi-php71 check_config_file_age = True compare_providers_priority = 80 cost = 1000 deltarpm_metadata_percentage = 100 deltarpm_percentage = enabled = True enablegroups = True ... ... ...
次に、yum update を実行します:
yum update -y
アップグレードではなく、CentOS 7 に PHP 7.1 をインストールするだけの場合は、次のコマンドを実行してください:
yum install php php-devel php-gd php-mbstring php-mcrypt php-soap php-mysqlnd
以下に示すように、現在のすべての PHP パッケージを PHP 7.1 に更新する必要があります。
この問題が発生した場合:
You could try using --skip-broken to work around the problem ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: php-5.6.30-1.el7.remi.x86_64 has missing requires of httpd-mmn = ('0', '20120211x8664', None)
httpd パッケージをインストールすることで修正できます。これは使用していませんが、必須です:
yum install httpd -y
その後、起動プロセスから httpd を無効にして、Nginx と一緒に起動しようとしてポート 80 の競合が発生しないようにします。
systemctl disable httpd
PHP 7.1.x では使用できないため、Xcache を削除します。
yum remove php-xcache* -y
Xcache を保持すると、以下に示すように yum エラーが発生する可能性があります:
--> Finished Dependency Resolution Error: Package: 1:php-xcache-3.2.0-1.el7.remi.5.6.x86_64 (@remi-php56) Requires: php(zend-abi) = 20131226-64 Removing: php-common-5.6.30-1.el7.remi.x86_64 (@remi-php56) php(zend-abi) = 20131226-64 Updated By: php-common-7.1.3-1.el7.remi.x86_64 (remi-php71) php(zend-abi) = 20160303-64 Available: php-common-5.4.16-42.el7.x86_64 (base) php(zend-abi) = 20100525-64 Available: php-common-5.6.29-1.el7.remi.x86_64 (remi-php56) php(zend-abi) = 20131226-64 Available: php-common-7.1.2-1.el7.remi.x86_64 (remi-php71) php(zend-abi) = 20160303-64 Error: Package: 1:php-xcache-3.2.0-1.el7.remi.5.6.x86_64 (@remi-php56) Requires: php(api) = 20131106-64 Removing: php-common-5.6.30-1.el7.remi.x86_64 (@remi-php56) php(api) = 20131106-64 Updated By: php-common-7.1.3-1.el7.remi.x86_64 (remi-php71) php(api) = 20160303-64 Available: php-common-5.4.16-42.el7.x86_64 (base) php(api) = 20100412-64 Available: php-common-5.6.29-1.el7.remi.x86_64 (remi-php56) php(api) = 20131106-64 Available: php-common-7.1.2-1.el7.remi.x86_64 (remi-php71) php(api) = 20160303-64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
私が気づいたことの 1 つ:いくつかのパッケージがまだ PHP 5.6 バージョンのものです:
[[email protected]:~]rpm -qa | grep php56 php56-php-common-5.6.30-1.el7.remi.x86_64 php56-runtime-2.1-5.el7.remi.x86_64 php56-php-pecl-msgpack-0.5.7-1.el7.remi.x86_64 php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64 php56-php-pecl-igbinary-2.0.1-1.el7.remi.x86_64 php56-php-pecl-zip-1.13.5-1.el7.remi.x86_64
それらを削除し、Remi から 7.1 バージョンをインストールします:
yum remove php56*
yum install yum install php71-php-common php71-runtime php71-php-pecl-msgpack php71-php-pecl-jsonc php71-php-pecl-igbinary php71-php-pecl-zip
PHP 5.6 から PHP 7.1 へのアップグレードが完了しました。
最後に、http と php-fpm を再起動して変更を適用してください:
systemctl restart nginx systemctl restart php-fpm
以上で、CentOS 7 で PHP 7.1 をアップグレードまたはインストールする方法がわかりました。このチュートリアルに従って質問や問題がある場合はお知らせください。
Remi RPM Repo を使用して CentOS 7 / RHEL 7 に PHP 7.1 をインストール / アップグレードする