Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【WordPressの謎】「php: コマンドが見つかりません」なのに、なぜWebサイトが正常に動いているのか?

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

こんにちは! 先日、あるサーバーのメンテナンスをしていて、不思議な現象に遭遇しました。

php -v を打っても『コマンドが見つかりません』と怒られる。なのに、なぜかWordPressは平然と動作している……」

一瞬、「え、何かがPHPの肩代わりをしてるの!?」と脳内パニックになりかけましたが、ログやパッケージリストをよく解析すると、Linuxサーバー(今回はDNFを使っているのでAlmaLinux 10やRocky Linux 10などのRHEL系環境ですね)の「ある仕組み」が原因でした。

今回は、この「一見PHPが入っていないように見えるのに、WordPressが動くカラクリ」を解説します!

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

謎を解く手がかり:検証ログを読み解く

送られてきたログには、重大なヒントが3つ隠されていました。

① php -v でエラーになる

Bash

# php -v
-bash: php: コマンドが見つかりません

確かに、コマンドライン(CLI)で使うための php コマンドが認識されていません。これだけ見ると「PHPがインストールされていない」ように見えます。

② dnf install php をしようとすると……

Bash

インストール:
  php   x86_64   8.3.29-1.el10_1   appstream   8.4 k
弱い依存関係のインストール:
  php-cli   x86_64   8.3.29-1.el10_1   appstream   3.6 M

ここで注目したいのは、未インストールとして挙げられているのが php 本体(わずか 8.4k のメタパッケージ)と、php-cli(3.6M) というパッケージである点です。

③ rpm -qa php* の結果(決定打!)

サーバーにインストール済みのパッケージ一覧を確認すると、答えがすべて書いてありました。

Bash

# rpm -qa php*
php-common-...
php-pdo-...
...
php-fpm-8.3.29-1.el10_1.x86_64  ←★これ!!
php-xml-...
php-mbstring-...

【結論】PHPは入っている!ただし「黒衣(裏方)」として動いている

結論から言うと、「PHPはバッチリ入っています」。 ただし、コマンドラインから実行するためのPHP(php-cli)が入っていないだけです。

WordPressが動作している理由は、リストの最後の方にある php-fpm というパッケージが原因です。

なぜ「コマンドが見つかりません」になるの?

Linux(RHEL系)のパッケージ管理において、私たちがよく使う php というコマンドは、php-cli(Command Line Interface) というパッケージに同梱されています。

今回のサーバーでは、この php-cli がインストールされていないため、システムが「php ってコマンドは知らないよ!」と返していたのです。

では、なぜWordPressは動くのか?

WordPressを動かしているのは、コマンドではなく php-fpm(FastCGI Process Manager) という「Webサーバー専用のPHP実行エンジン(デーモン)」です。

現代の高速なWordPress環境(Nginx + PHP-FPM や Apache + mpm_event + PHP-FPM)では、Webサーバー(Nginx等)がブラウザからのリクエストを受け取り、裏側で待機している php-fpm に「このPHPファイルを処理して!」と直接丸投げします。

この連携に php-cliphpコマンド)は一切必要ありません。そのため、コマンドが未実装でもWordPressは何の問題もなく、爆速で動作し続けていたのです。

なぜこんな状態のサーバーが生まれるのか?

「普通は dnf install php で一括インストールするんじゃないの?」と思いますよね。 この状態が生まれる主な理由は以下の2つです。

  1. セキュリティと軽量化のため(プロの設定) 本番環境のサーバーでは、「不要なものは入れない」のが鉄則です。コマンドラインからPHPを動かす必要がない(CronなどでPHPを実行しない)環境であれば、脆弱性リスクを減らし、サーバー容量を節約するために php-fpm 周りだけをピンポイントでインストールすることがあります。

  2. 構築スクリプト(AnsibleやDockerなど)の指定漏れ サーバーを自動構築する際、Webサイトを動かすためだけに php-fpm などを指定し、php-cli を入れ忘れた(あるいは不要と判断した)ケースです。

まとめ:php -v が使えなくて不便なときの対処法

もし、この状態のサーバーで「WP-CLIを使いたい」「CronでPHPスクリプトを動かしたい」となった場合は、大人しく以下のコマンドを実行しましょう。

Bash

# dnf install php-cli

これで無事に php -v が使えるようになります!

「コマンドがない=システムが入っていない」とは限らないのが、Linuxサーバー管理の奥深く、そして面白いところですね。同じ現象で首をかしげていた方の参考になれば幸いです!

タイトルとURLをコピーしました