「インストール - PHP」の版間の差分
48行目: | 48行目: | ||
== PHP 7のインストール == | == PHP 7のインストール == | ||
==== パッケージ管理システムからインストール ==== | |||
===== CentOS ===== | ===== CentOS ===== | ||
PHP 5をアンインストールするため、以下のコマンドを実行する。<br> | PHP 5をアンインストールするため、以下のコマンドを実行する。<br> | ||
71行目: | 72行目: | ||
# PHP 7.4 | # 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 | 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 | ||
<br> | |||
==== ソースコードからインストール ==== | |||
PHPのビルドに必要なライブラリをインストールする。<br> | |||
sudo zypper install ccache re2c zlib-devel libxml2-devel sqlite3-devel libopenssl-1_1-devel pcre-devel gd-devel libwebp-devel libjpeg62-devel \ | |||
libpng16-devel libXpm-devel freetype2-devel libXft-devel libcurl-devel icu libicu-devel oniguruma-devel | |||
<br> | |||
[https://www.php.net/downloads.php PHPの公式Webサイト]にアクセスして、PHPのソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf php-<バージョン>.tar.xz | |||
cd php-<バージョン> | |||
<br> | |||
ビルド用ディレクトリを作成する。<br> | |||
mkdir phpbuild && cd phpbuild | |||
<br> | |||
PHPをビルドおよびインストールする。<br> | |||
../configure --prefix=<PHPのインストールディレクトリ> \ | |||
--enable-fpm --enable-phpdbg --enable-phpdbg-webhelper --enable-phpdbg-debug --enable-intl --enable-mbstring \ | |||
--enable-mbregex --enable-bcmath --enable-calendar --enable-sockets --enable-sysvmsg --enable-sysvsem \ | |||
--enable-sysvshm --enable-ftp --enable-exif --enable-soap --enable-zip \ | |||
--with-config-file-path=<php.iniファイルの配置するパス> # ユーザが指定する場合 | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
~/.profileファイル等に環境変数の設定を追記する。<br> | |||
vi ~/.profile | |||
<br> | |||
# ~/.profileファイル | |||
export PATH="/<PHPのインストールディレクトリ>/bin:/<PHPのインストールディレクトリ>/sbin:$PATH" | |||
PHP_ROOT="<PHPのインストールディレクトリ>" | |||
PHP_BIN="/<PHPのインストールディレクトリ>/bin:/<PHPのインストールディレクトリ>/sbin" | |||
<br> | |||
最後に、php.iniファイルを配置する。<br> | |||
php.iniファイルの標準パスは、/<PHPのインストールディレクトリ>/lib64ディレクトリである。 | |||
<code>configure</code>スクリプト実行時に<code>--with-config-file-path=</code>オプションを指定することにより、php.iniファイルを配置するパスが変更できる。<br> | |||
なお、<code>php --ini</code>コマンドを実行することにより、php.iniファイルを配置するパスが表示される。<br> | |||
<br> | |||
php.iniファイルは、ダウンロードしたPHPのソースコードのトップディレクトリに存在するため、これをコピーする。<br> | |||
cp /<PHPのソースコードがあるディレクトリ>/php.ini-development /<PHPのインストールディレクトリ>/lib64 | |||
<br><br> | <br><br> | ||
2021年12月25日 (土) 13:22時点における版
概要
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
ソースコードからインストール
PHPのビルドに必要なライブラリをインストールする。
sudo zypper install ccache re2c zlib-devel libxml2-devel sqlite3-devel libopenssl-1_1-devel pcre-devel gd-devel libwebp-devel libjpeg62-devel \ libpng16-devel libXpm-devel freetype2-devel libXft-devel libcurl-devel icu libicu-devel oniguruma-devel
PHPの公式Webサイトにアクセスして、PHPのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf php-<バージョン>.tar.xz cd php-<バージョン>
ビルド用ディレクトリを作成する。
mkdir phpbuild && cd phpbuild
PHPをビルドおよびインストールする。
../configure --prefix=<PHPのインストールディレクトリ> \ --enable-fpm --enable-phpdbg --enable-phpdbg-webhelper --enable-phpdbg-debug --enable-intl --enable-mbstring \ --enable-mbregex --enable-bcmath --enable-calendar --enable-sockets --enable-sysvmsg --enable-sysvsem \ --enable-sysvshm --enable-ftp --enable-exif --enable-soap --enable-zip \ --with-config-file-path=<php.iniファイルの配置するパス> # ユーザが指定する場合 make -j $(nproc) make install
~/.profileファイル等に環境変数の設定を追記する。
vi ~/.profile
# ~/.profileファイル export PATH="/<PHPのインストールディレクトリ>/bin:/<PHPのインストールディレクトリ>/sbin:$PATH" PHP_ROOT="<PHPのインストールディレクトリ>" PHP_BIN="/<PHPのインストールディレクトリ>/bin:/<PHPのインストールディレクトリ>/sbin"
最後に、php.iniファイルを配置する。
php.iniファイルの標準パスは、/<PHPのインストールディレクトリ>/lib64ディレクトリである。
configure
スクリプト実行時に--with-config-file-path=
オプションを指定することにより、php.iniファイルを配置するパスが変更できる。
なお、php --ini
コマンドを実行することにより、php.iniファイルを配置するパスが表示される。
php.iniファイルは、ダウンロードしたPHPのソースコードのトップディレクトリに存在するため、これをコピーする。
cp /<PHPのソースコードがあるディレクトリ>/php.ini-development /<PHPのインストールディレクトリ>/lib64
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のページを参照すること。