手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 PHP CLI の基本設定 – 管理コマンドと拡張モジュールを確認する

関連する記事

Ubuntu 26.04 で PHP アプリケーションを運用する場合、Web 経由の実行は PHP-FPM、管理コマンドや cron、メンテナンス処理は PHP CLI が担当します。

この記事では、PHP CLI の導入、拡張モジュール、設定ファイル、phpenmod、MariaDB / Redis 連携、管理コマンド実行前の確認ポイントをまとめます。

この記事で扱うこと
  • PHP CLI と PHP-FPM の役割の違い
  • PHP パッケージと拡張モジュールの導入
  • php -vphp -mphp --ini の確認
  • CLI 用 ini 設定と phpenmod
  • MariaDB / Redis 連携と cron / 管理コマンドの前提
対象 OSUbuntu 26.04 Server
対象PHP CLI
PHP バージョン例8.5
主な確認コマンドphp -vphp -mphp --ini
ini 配置例/etc/php/8.5/mods-available/my.php.ini
参考書籍
参考書籍
PHP 8 Programming Tips, Tricks and Best Practices
PHP 8 系の言語仕様、CLI、拡張モジュール、実装上の注意点を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

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 \
  imagemagick

PHP 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 mysqli

CLI 用の追加 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 = 1
コマンド
sudo 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 -t

MariaDB と 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 -vphp -mphp --ini で CLI 側の状態を確認します。

PHP-FPM、MariaDB、Redis と組み合わせる環境では、CLI と FPM の設定差、拡張モジュール、実行ユーザー、cron のエラー確認先まで押さえておくと、管理コマンドやバッチ処理のトラブルを切り分けやすくなります。

関連する記事
Ubuntu 26.04 PHP CLI の基本設定 – 管理コマンドと拡張モジュールを確認する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る