PHP
何かと詰まりやすいphp
- PHP環境の構築
- Ubuntu環境にPHPレポジトリを追加してインストール
- Ubuntu 24.04のphp環境構築と環境設定
- PHPのメモリ使用量をデフォルトから増やす。
- PHP環境でComposerをインストールする。
- PHPモジュール
PHP環境の構築
Ubuntu環境にPHPレポジトリを追加してインストール
概要
UbuntuのLAMP環境に必要なPHP8.1系とその設定を行います。
さっくりとした手順
- レポジトリを追加します
- インストールを行います
- インストールを確認します
レポジトリを追加します。
- レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
- パッケージ全体のアップデート
sudo aptitude update
PHP8.1系のインストールを行います。
- PHP8.1をインストール
sudo aptitude install php8.1
- Webアプリでよく用いるPHPモジュールをインストール
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,imagick,gmp}
インストール後の確認をします。
- Webサービス再起動
sudo systemctl restart apache2.service
- PHPバージョン確認
php -v
PHP 8.1.27 (cli) (built: Dec 21 2023 20:19:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.27, Copyright (c) Zend Technologies
with Zend OPcache v8.1.27, Copyright (c), by Zend Technologies
Ubuntu 24.04のphp環境構築と環境設定
「Nextcloud等のLAMP環境が動くか」を考慮しながらUbuntu 24.04サーバを構築しています。
そこで、php8.3のインストール及びモジュールの追加を行います。
さっくりとした手順
- レポジトリを追加します。
- php並びに必要なパッケージを段階的にインストールします。
- Nextcloud等で必要になるように設定をしていきます。
レポジトリ追加とアップデート
- phpレポジトリの追加
sudo add-apt-repository ppa:ondrej/php
- パッケージ全体のアップデート
sudo aptitude update
段階的なインストール
- php本体
sudo aptitude install php8.3
- 周辺モジュール(APCuとMemcached)
sudo aptitude memcached php8.3-apcu
- Webアプリに必要な周辺モジュール(MySQLを使う場合)
sudo aptitude install php8.3-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,imagick,gmp}
- Webアプリに必要な周辺モジュール(Postgresを使う場合)
sudo aptitude install php8.3-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,pgsql,pdo_pgsql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,imagick,gmp}
- インストール確認
php -v
PHP 8.3.11 (cli) (built: Aug 30 2024 09:28:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.11, Copyright (c) Zend Technologies
with Zend OPcache v8.3.11, Copyright (c), by Zend Technologies
2024/09/06現在のバージョンです。
OPcacheとAPCuの有効化
Nextcloudはこの設定が無いと警告の対象となります。(或いはエラーが発生します)
- 設定ファイル待避
sudo mv /etc/php/8.3/mods-available/opcache.ini /path/to/backup/directory/opcache.ini.$(date +%Y%m%d)
sudo mv /etc/php/8.3/mods-available/apcu.ini /path/to/backup/directory/apcu.ini.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- 設定ファイル差し替え
cat <<- __EOF__ | sudo tee -a /etc/php/8.3/mods-available/opcache.ini
; configuration for php opcache module
; priority=10
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
cat <<- __EOF__ | sudo tee -a /etc/php/8.3/mods-available/apcu.ini
extension=apcu.so
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
__EOF__
※ メモリ量などは環境に合わせます。
- 設定反映
sudo systemctl restart apache2.service
- Apache稼働確認
systemctl status apache2.service
active (running)
を確認します。
PHPのメモリ使用量をデフォルトから増やす。
概要
NextcloudなどのWebアプリでは、デフォルトの128MBでは足りないと言われますので、php.iniを修正します。
環境
- Ubuntu 20.04
- Ubuntu 22.04
で動作を確認しました。PHP 8.1でapache環境です。
手順
php.iniのバックアップを作成
- バックアップ作成
sudo cp -pi /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
diff -u /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
差分が存在しないことにより、バックアップが取れていることを確認します。
php.ini修正
- sedでファイル置き換え
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/apache2/php.ini
memory_limitを512Mに置き換えます。(Nextcloudの推奨値。サーバの環境に合わせます)
- 差分確認
diff -u /path/to/backup/php.ini.$(date +%Y%m%d) /etc/php/8.1/apache2/php.ini
- 差分
-memory_limit = 128M
+memory_limit = 512M
設定反映
- apache 再起動
sudo systemctl restart apache2.service
PHP環境でComposerをインストールする。
概要
LAMP環境で使われるComposerをインストールします。
環境
- Ubuntu 20.04
- Ubuntu 22.04
の両環境で動作を確認しました。PHP 8.1、Apache環境です。
手順
Composerをダウンロードしてインストールします。
- セットアッププログラムの入手
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- セットアップ
sudo php composer-setup.php
- 入手したプログラムのリンク解除
sudo php -r "unlink('composer-setup.php');"
全てのユーザーが実行できるように設定します。
- composerを移動
sudo mv composer.phar /usr/local/bin/composer
- 実行権付与
sudo chmod +x /usr/local/bin/composer
インストールを確認します。
- パス確認
which composer
/usr/local/bin/composer
を確認します。
- バージョン確認
composer -V
Composer version 2.6.6 2023-12-08 18:32:26
のように表示されればインストールできています。
PHPモジュール
PHP8.1環境でmemcacheとAPCuを有効化
概要
Nextcloudで特に重要になるmemcacheとAPCuを有効化していきます。
環境
以下で確認済み。
- Ubuntu 20.04
- Ubuntu 22.04
両方ともPHP 8.1を入れていて、apache環境です。
手順
ディレクトリに移動します。
cd /etc/php/8.1/cli/conf.d
memcacheにファイルを追記します。
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/10-opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
apcuにファイルを追記します。
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/20-apcu.ini
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
__EOF__
設定を反映します。
sudo systemctl restart apache2.service
モジュールが組み込まれているかを確認します。
php -m | grep apcu
php -m | grep memcache
それぞれが表示されれば設定は有効化されています。