Contents
Overview
Apache で PHP を有効化します。Ubuntu 22.04 では PHP 8.1 がインストールされます。
前提条件
- こちらを参考に Apache をインストール済みであること。
インストール
PHP をインストールします。
パッケージリストの作成
指定するパッケージ数が多いので、パッケージリストを個別に作成しています。この PHP パッケージリストは PHP を使用する大抵のアプリケーションに対応すると思います。例えば、WordPress, Nextcloud, Roundcube などです。
myadmin@ubuntu:~$ tee php-pkg.list <<"EOF"
php
php-apcu
php-bcmath
php-bz2
php-cgi
php-curl
php-enchant
php-fpm
php-gd
php-gmp
php-imagick
php-intl
php-mbstring
php-mysql
php-pear
php-redis
php-smbclient
php-zip
php8.1-opcache
EOF
パッケージリストを指定したインストール
パッケージリストを指定してインストールします。
myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install $(cat php-pkg.list)
/etc/php/8.1/mods-available/my.php.ini
PHP の設定ファイルである php.ini は、apache2, cgi, cli のそれぞれのディレクトリに存在しています。本稿では php.ini は変更せずに個別の設定ファイルを作成して設定を追加する方法をとります。個別の設定ファイルは mods-available に配置します。既存の設定ファイルが存在する為、それらを参考に my.php.ini を作成します。ここでは最低限必須となる date.timezone のみを指定していますが、使用するアプリケーションにより適宜設定を追加します。コメント行の priority を指定しないと認識されません。
myadmin@ubuntu:~$ sudo tee /etc/php/8.1/mods-available/my.php.ini <<"EOF"
; configuration for php my.php module
; priority=90
date.timezone = "Asia/Tokyo"
EOF
設定の有効化
phpenmod コマンドで my.php を有効にします。この方法は Aapache の設定有効化と似た方式であり、phpdismod, phpenmod, phpquery があります。apache2, cgi, cli の conf.d で 90-my.php.ini が有効になっていることを確認できます。
myadmin@ubuntu:~$ sudo phpenmod my.php
下記のコマンドにより php8.1-cgi.conf がロードされ、Apache の設定ファイルとして PHP が有効になります。
myadmin@ubuntu:~$ sudo a2enconf php8.1-cgi
設定を有効化します。
myadmin@ubuntu:~$ sudo systemctl restart apache2.service && systemctl status apache2.service
正常性確認
下記の PHP スクリプトを作成します。ブラウザから Web サーバーにアクセス ( http://[ fqdn ]/info.php ) して意図したレスポンスがあることを確認します。WAF が有効の場合はブロックされます。
myadmin@ubuntu:~$ echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php
PHP スクリプトを削除します。
myadmin@ubuntu:~$ sudo rm -f /var/www/html/info.php
インストールできました。
ありがとうございます。
ご参考になったようで何よりです!