インストール - PHP

提供:MochiuWiki : SUSE, EC, PCB
2021年4月20日 (火) 15:35時点におけるWiki (トーク | 投稿記録)による版 (→‎インストール時の注意点)
ナビゲーションに移動 検索に移動

概要

CentOSやSUSEの標準リポジトリにあるPHPのバージョンは古いことが多い。
また、PHP 7以降は大幅な改良がされており、実行速度をはじめ様々なものがアップデートされているので、特別な事情がない限りはアップグレードした方がよい。

Raspberry Piにおいて、ここでは、外部リポジトリとしてpackages.sury.org/phpを使用しているが、
このリポジトリを使用しても、常に最新版のPHPになる訳ではないことに注意すること。


リポジトリの追加

CentOS

以下のページを参照して、EPELリポジトリとRemiリポジトリを追加する。
YumリポジトリにEPELとRemiを追加する方法

SUSE(不要)

以下のコマンドを実行して、Develリポジトリを追加する。

# SUSE 15.1
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/ php

# SUSE 15.2
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.2/ php

# SLE 15 SP1
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP1/ php


Develリポジトリからダウンロードされるパッケージの優先度を設定するため、以下のコマンドを実行する。

sudo zypper mr -p 70 php


次に、全てのリポジトリを更新する。
Develリポジトリを初めて使用する場合、GPGキーを受け入れるように求められる。

sudo zypper refresh


Raspberry Pi

まず、lsb-releaseをインストールする。

sudo apt-get install lsb-release


packages.sury.orgからPHPのGPGキーを登録するため、以下のコマンドを実行する。

wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -


リポジトリを追加するファイルを作成して、そのファイルにpackages.sury.orgのPHPリポジトリの情報を追加する。

echo "deb https://packages.sury.org/php/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/php.list


パッケージリストの更新を行う。

sudo apt-get update


外部リポジトリからインストール可能なPHPパッケージの情報を確認するため、以下のコマンドを実行する。

sudo apt-cache policy php



PHP 7のインストール

CentOS

PHP 5をアンインストールするため、以下のコマンドを実行する。
このとき、php.iniファイルを変更している場合はバックアップを取る。
これは、新しいPHPをインストールした時点でphp.iniファイルが上書きされるためである。

sudo yum remove php-*


次に、PHP 7をインストールする。
インストールは、--enablerepoオプションを付加して、以下のコマンドを実行する。
アップデート後は、php.iniファイルが上書きされているのでバックアップから復元する。

sudo yum --enablerepo=remi-php73 install php php-cli.x86_64 php-pdo.x86_64 php-gd.x86_64 php-mbstring.x86_64 php-common.x86_64 php-mysql php73-devel


SUSE

PHP 7およびいくつかの主要なPHPモジュールをインストールする。

sudo zypper install php7 php apache2-mod_php7 php7-curl php7-xmlreader php7-zip php7-pdo php7-gd php7-json php7-mysql php7-mbstring php7-openssl php7-pecl php7-devel php7-fpm apache2-mod_php7


Raspberry Pi

PHP 7およびいくつかの主要なPHPモジュールをインストールするため、以下のコマンドを実行する。

# PHP 7.3
sudo apt-get install php7.3 php7.3-fpm php7.3-mysql php7.3-mbstring php7.3-gd php7.3-zip php7.3-xml php7.3-common php7.3-curl php7.3-intl php-acpu

# PHP 7.4
sudo apt-get install php7.4 php7.4-cli php7.4-mysql php7.4-mbstring php7.4-gd php7.4-zip php7.4-xml php7.4-common php7.4-curl php7.4-intl



Apache2上でPHP 7の有効化

Apache2上でPHP 7を動作させるため、モジュールを追加する。(httpd.confに直接記述してもよい)

# モジュールを追加する場合
sudo a2enmod php7

# モジュールを削除する場合
sudo a2dismod php7


設定を反映させるため、Apache2を再起動する。

sudo systemctl restart apache2



確認方法

最後に、インストールされたPHPのバージョンを確認するため、以下のコマンドを実行する。

php -v


運用していく上で必要な関連パッケージがあれば、適宜追加する。


インストール時の注意点

CentOSでのPHP7のインストールにおいて、旧バージョンのPHPが指定されることを防ぐため、一旦全てのリポジトリを無効化し、PHP7のリポジトリを指定する。

sudo yum --disablerepo=* --enablerepo=remi,remi-php73 install php hp-cli.x86_64 php-pdo.x86_64 php-gd.x86_64 php-mbstring.x86_64 php-common.x86_64 php-mysql php73-devel


EPELリポジトリおよびRemiリポジトリの追加方法で、EPELリポジトリの公開鍵を取得するためにlibargon2をインストールしているが、
このパッケージは、PHP7をインストールする際に依存性パッケージとして必要になる。
もし、libargon2をインストールせずにPHPをインストールしようとすると、恐らくEPELが無いために依存性が解決されない。
PHP7をインストールする前に、以下のコマンドを実行してlibargon2をインストールする。

sudo yum --disablerepo=* --enablerepo=epel install libargon2



複数のバージョンのPHP-FPM

PHP-FPMを使用する場合に限り、複数のバージョンのPHPをインストールしてApacheで動作することができる。

1つのPHPのバージョンを標準として設定しておき、仮想ホストにおいて他のPHPのバージョンを実行することができる。
これは、PHPベースのソフトウェアが特定のバージョンを必要とする場合や最新版のPHPとの互換性が無い場合に必要となる。

以下の例では、複数のバージョンのPHPを同時に実行している。

まず、複数のバージョンのPHP-FPMをインストールする。(例えば、PHP 7.2とPHP 7.4)

sudo apt-get install php7.2-fpm php7.4-fpm


次に、2つのポートで動作する2つの仮想ホストを作成する。
Apacheの設定ファイル(/etc/apache2/ports.conf)を、以下のように編集する。("Listen 80"の後に以下の行を追記する)

Listen 8080
Listen 8081


/etc/apache2/sites-available/000-default.confファイルの仮想ホストの設定を編集する。(2つの仮想ホストの設定を追記する)

<VirtualHost *:8080>
   <FilesMatch ".+\.ph(ar|p|tml)$">
      SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
   </FilesMatch>
</VirtualHost>

<VirtualHost *:8081>
   <FilesMatch ".+\.ph(ar|p|tml)$">
      SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
   </FilesMatch>
</VirtualHost>



Xdebugのインストール

Xdebugをインストールする場合は、インストール - Xdebugのページを参照すること。