序章

2015年12月3日にリリースされたPHP7は、スカラー型ヒントなどの新機能とともに、以前のバージョンの言語よりも大幅な速度の向上を約束します。 このガイドでは、コミュニティが提供するパッケージを使用して、PHP 5.x(任意のリリース)を実行しているApacheまたはNginxWebサーバーをPHP7にすばやくアップグレードする方法について説明します。

警告:ほとんどのメジャーバージョンの言語リリースと同様に、本番環境でPHP7に切り替える前に少し待つことをお勧めします。 それまでの間、新しいリリースとの互換性についてアプリケーションをテストし、ベンチマークを実行して、新しい言語機能に慣れておく良い機会です。

データベース管理のためにphpMyAdminをインストールした場合、phpMyAdminパッケージはまだアップグレードをサポートしていないため、アップグレードする前に公式のCentOSPHP7パッケージを待つことを強くお勧めします。 アクティブユーザーで他のサービスやアプリケーションを実行している場合は、最初にステージング環境でこのプロセスをテストするのが最も安全です。

前提条件

このガイドは、CentOS7でPHP5.xを実行していることを前提としています。 mod_php Apacheと組み合わせて、またはPHP-FPMとNginxを組み合わせて。 また、root以外のユーザーが sudo 管理タスクの特権。

PHP 5のインストールプロセスは、次のガイドに記載されています。

IUSコミュニティプロジェクトリポジトリへの登録

PHP 7.xは、主要なディストリビューションの公式リポジトリにまだパッケージ化されていないため、サードパーティのソースに依存する必要があります。 いくつかのリポジトリはPHP7RPMファイルを提供します。 IUSリポジトリを使用します。

IUSは、リポジトリにサブスクライブし、関連するGPGキーをインポートするためのインストールスクリプトを提供しています。 ホームディレクトリにいることを確認し、を使用してスクリプトを取得します curl:

  1. cd ~
  2. curl 'https://setup.ius.io/' -o setup-ius.sh

スクリプトを実行します。

  1. sudo bash setup-ius.sh

アップグレード mod_php Apacheで

このセクションでは、ApacheをWebサーバーとして使用するシステムのアップグレードプロセスについて説明します。 mod_php PHPコードを実行します。 代わりに、NginxとPHP-FPMを実行している場合は、次のセクションに進んでください。

既存のPHPパッケージを削除することから始めます。 y を押し、 Enter を押して、プロンプトが表示されたら続行します。

  1. sudo yum remove php-cli mod_php php-common

IUSから新しいPHP7パッケージをインストールします。 もう一度、プロンプトが表示されたら y を押し、Enterを押します。

  1. sudo yum install mod_php70u php70u-cli php70u-mysqlnd

最後に、Apacheを再起動して、の新しいバージョンをロードします。 mod_php:

  1. sudo apachectl restart

によって管理されているApacheのステータスを確認できます。 httpd systemd 単位、使用 systemctl:

  1. systemctl status httpd

Nginxを使用したPHP-FPMのアップグレード

このセクションでは、WebサーバーとしてNginxを使用し、PHPコードを実行するためにPHP-FPMを使用するシステムのアップグレードプロセスについて説明します。 すでにApacheベースのシステムをアップグレードしている場合は、PHPテストのセクションに進んでください。

既存のPHPパッケージを削除することから始めます。 y を押し、 Enter を押して、プロンプトが表示されたら続行します。

  1. sudo yum remove php-fpm php-cli php-common

IUSから新しいPHP7パッケージをインストールします。 もう一度、プロンプトが表示されたら y を押し、Enterを押します。

  1. sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

インストールが完了したら、PHP-FPMとNginxの両方の構成をいくつか変更する必要があります。 構成されているように、PHP-FPMはローカルTCPソケットで接続をリッスンしますが、Nginxはファイルシステム上のパスにマップされるUnixドメインソケットを予期します。

PHP-FPMは、子プロセスの複数のプールを処理できます。 構成されているように、wwwと呼ばれる単一のプールを提供します。 /etc/php-fpm.d/www.conf. このファイルをで開く nano (またはお好みのテキストエディタ):

  1. sudo nano /etc/php-fpm.d/www.conf

を含むブロックを探します listen = 127.0.0.1:9000、これは、PHP-FPMにポート9000のループバックアドレスをリッスンするように指示します。 この行をセミコロンでコメントし、コメントを外します listen = /run/php-fpm/www.sock 以下の数行。

/etc/php-fpm.d/www.conf
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.
listen = /run/php-fpm/www.sock

次に、を含むブロックを探します listen.acl_users 値、およびコメント解除 listen.acl_users = nginx:

/etc/php-fpm.d/www.conf
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
listen.acl_users = nginx
;listen.acl_groups =

終了してファイルを保存します。 の nano、これを行うには、 Ctrl-X を押して終了し、 y を押して確認し、Enterを押して上書きするファイル名を確認します。

次に、NginxがPHPファイルを処理するために正しいソケットパスを使用していることを確認します。 開くことから始めます /etc/nginx/conf.d/default.conf:

  1. sudo nano /etc/nginx/conf.d/php-fpm.conf

php-fpm.conf 他のNginx構成ディレクティブから参照できるupstreamを定義します。 アップストリームブロック内で、 # コメントアウトする server 127.0.0.1:9000;、およびコメント解除 server unix:/run/php-fpm/www.sock;:

/etc/nginx/conf.d/php-fpm.conf
# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
        #server 127.0.0.1:9000;
        server unix:/run/php-fpm/www.sock;
}

ファイルを終了して保存し、開いてください /etc/nginx/conf.d/default.conf:

  1. sudo nano /etc/nginx/conf.d/default.conf

で始まるブロックを探します location ~ \.php$ {. このブロック内で、 fastcgi_pass 指令。 この行をコメント化または削除して、次のように置き換えます fastcgi_pass php-fpm、で定義されたアップストリームを参照します php-fpm.conf:

/etc/nginx/conf.d/default.conf
  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_pass php-fpm;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }

ファイルを終了して保存し、PHP-FPMとNginxを再起動して、新しい構成ディレクティブを有効にします。

  1. sudo systemctl restart php-fpm
  2. sudo systemctl restart nginx

各サービスの状況は、以下を使用して確認できます。 systemctl:

  1. systemctl status php-fpm
  2. systemctl status nginx

PHPのテスト

Webサーバーを構成し、新しいパッケージをインストールすると、PHPが稼働していることを確認できるはずです。 コマンドラインでインストールされているPHPのバージョンを確認することから始めます。

  1. php -v
出力
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

Webサーバーのドキュメントルートにテストファイルを作成することもできます。 その場所はサーバー構成によって異なりますが、ドキュメントルートは通常次のいずれかのディレクトリに設定されます。

  • /var/www/html
  • /var/www/
  • /usr/share/nginx/html

使用する nano、という新しいファイルを開きます info.php ドキュメントルート内。 デフォルトでは、Apacheでは次のようになります。

  1. sudo nano /var/www/html/info.php

Nginxでは、代わりに次を使用できます。

  1. sudo nano /usr/share/nginx/html/info.php

次のコードを貼り付けます。

info.php
<?php
phpinfo();

エディターを終了し、保存します info.php. 次に、ブラウザに次のアドレスをロードします。

http://server_domain_name_or_IP/info.php

実行中のバージョンと構成をリストしたPHP7情報ページが表示されます。 これを再確認したら、削除するのが最も安全です info.php:

  1. sudo rm /var/www/html/info.php

これで、PHP7が正常にインストールされました。 ここから、ErikaHeidiのGetting Ready for PHP 7 ブログ投稿をチェックして、公式移行ガイドを確認することをお勧めします。