Ubuntu 26.04 で PHP アプリケーションを運用する場合、Web 経由の実行は PHP-FPM、管理コマンドや cron、メンテナンス処理は PHP CLI が担当します。
この記事では、PHP CLI の導入、拡張モジュール、設定ファイル、phpenmod、MariaDB / Redis 連携、管理コマンド実行前の確認ポイントをまとめます。
- PHP CLI と PHP-FPM の役割の違い
- PHP パッケージと拡張モジュールの導入
php -v、php -m、php --iniの確認- CLI 用 ini 設定と
phpenmod - MariaDB / Redis 連携と cron / 管理コマンドの前提
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| 対象 | PHP CLI |
| PHP バージョン例 | 8.5 |
| 主な確認コマンド | php -v、php -m、php --ini |
| ini 配置例 | /etc/php/8.5/mods-available/my.php.ini |
PHP CLI と PHP-FPM の違いを確認する
PHP CLI はコマンドラインから php を実行するための環境です。PHP-FPM は Web サーバーから FastCGI で呼び出される常駐プロセスであり、読み込む ini や実行ユーザー、メモリ制限が CLI と異なることがあります。
- CLI は
phpコマンド、cron、管理ツールで使う - PHP-FPM は Web リクエストの PHP 実行で使う
php --iniと FPM 側の ini は分けて確認する- 必要な拡張モジュールが CLI 側でも有効か確認する
- 管理コマンドは実行ユーザーと権限も合わせて確認する
PHP と拡張モジュールをインストールする
PHP 本体と、Web アプリケーション運用で使うことが多い拡張モジュールを導入します。実際の環境では、アプリケーション要件に合わせて必要なものを選びます。
sudo apt update
sudo apt install -y \
php \
php-apcu \
php-bcmath \
php-bz2 \
php-cgi \
php-curl \
php-enchant \
php-gd \
php-gmp \
php-imagick \
php-intl \
php-ldap \
php-mbstring \
php-mysql \
php-pear \
php-redis \
php-smbclient \
php-xml \
php-zip \
imagemagickPHP CLI のバージョンと ini を確認する
導入後は、CLI のバージョン、読み込まれる ini、追加設定ディレクトリを確認します。Ubuntu 26.04 の確認例では PHP 8.5 系を前提にしていますが、実際のバージョンは php -v で確認します。
php -v
php --ini
php -i | grep '^Loaded Configuration File'
php -i | grep '^Scan this dir for additional .ini files'拡張モジュールを確認する
MariaDB、Redis、画像処理、国際化、XML、ZIP など、アプリケーションが必要とする拡張モジュールが CLI 側で読み込まれているか確認します。
php -m
php -m | grep -E 'apcu|curl|gd|intl|ldap|mbstring|mysqli|redis|smbclient|xml|zip'
php --ri redis
php --ri mysqliCLI 用の追加 ini を作成する
環境共通で追加したい PHP 設定は、mods-available に ini ファイルを置き、phpenmod で有効化できます。ここでは例として my.php.ini を使います。
memory_limit = 512M
date.timezone = Asia/Tokyo
apc.enable_cli = 1
opcache.enable = 1
opcache.enable_cli = 1sudo tee /etc/php/8.5/mods-available/my.php.ini >/dev/null <<'EOF'
memory_limit = 512M
date.timezone = Asia/Tokyo
apc.enable_cli = 1
opcache.enable = 1
opcache.enable_cli = 1
EOF
sudo phpenmod -v 8.5 my.php
php --ini
php -i | grep -E 'memory_limit|date.timezone|apc.enable_cli|opcache.enable_cli'CLI と FPM の設定差を確認する
CLI で有効な設定が PHP-FPM にも反映されるとは限りません。Web アプリケーションで使う設定は、FPM 側の ini と pool 設定も確認します。
php --ini
php -i | grep '^memory_limit'
php -i | grep '^date.timezone'
systemctl status php8.5-fpm.service --no-pager
sudo php-fpm8.5 -tMariaDB と Redis の接続前提を確認する
CLI から管理コマンドを実行する場合、DB や Redis の拡張モジュールが必要になることがあります。拡張モジュールだけでなく、実際の接続先も確認します。
php -m | grep -E 'mysqli|pdo_mysql|redis'
mariadb --version
redis-cli ping
redis-cli -s /run/redis/redis-server.sock ping管理コマンドの実行ユーザーを確認する
Nextcloud や WordPress の管理コマンド、cron、バッチ処理では、実行ユーザーが重要です。Web アプリケーションのファイル所有者や PHP-FPM の実行ユーザーとずれると、キャッシュや生成ファイルの権限問題が起きます。
id www-data
sudo -u www-data php -v
sudo -u www-data php -m
sudo -u www-data php --iniログとエラーを確認する
CLI 実行時のエラーは標準出力や cron のログに出ることがあります。PHP 側の error log を設定している場合は、CLI 実行時にも出力先を確認します。
php -i | grep '^error_log'
journalctl --no-pager -n 100
grep CRON /var/log/syslog
php -r 'echo PHP_VERSION, PHP_EOL;'公開前の確認ポイント
php -vで想定バージョンを確認しているphp --iniで読み込む ini を確認している- 必要な拡張モジュールが
php -mに出ている - CLI と FPM の設定差を把握している
- MariaDB / Redis 連携に必要な拡張を確認している
- 管理コマンドの実行ユーザーを確認している
- cron やバッチ処理のエラー確認先を把握している
まとめ
Ubuntu 26.04 の PHP CLI 基本設定では、PHP 本体と拡張モジュールを導入し、php -v、php -m、php --ini で CLI 側の状態を確認します。
PHP-FPM、MariaDB、Redis と組み合わせる環境では、CLI と FPM の設定差、拡張モジュール、実行ユーザー、cron のエラー確認先まで押さえておくと、管理コマンドやバッチ処理のトラブルを切り分けやすくなります。

