緊急PHP2Shell(CVE-2026-109618 / 109619)公表から1日。PHP 8.1 以前は修正版なし今すぐ診断
  1. ホーム
  2. ブログ
  3. 移行の手順

「Passing null to parameter ... is deprecated」の意味と直し方(PHP 8.1)

公開
著者
編集部

PHP 8.1 以降で出る「Passing null to parameter」の警告の意味と、プログラムの直し方をまとめた。

PHP 8.1 に上げると「Deprecated: ... Passing null to parameter #1 ($string) of type string is deprecated」という警告が大量に出ることがある。意味と直し方をまとめた。

この記事の要点
  • PHP の内部関数に null を渡したときの「非推奨」の警告
  • 今は動くが、将来の版ではエラーになる予定
  • 直し方は、null のときに空の文字列などを渡すようにすること
  • 本番の画面には出さず、ログで洗い出す

何が起きているか

  • strlen()・trim()・htmlspecialchars()・str_replace() など、文字列を受け取る関数に null を渡している
  • PHP 8.0 までは黙って空の文字列として扱われていた
  • PHP 8.1 から非推奨になり、警告が出るようになった

直し方

書き方例
null なら空の文字列にするtrim($value ?? '')
先に null かどうかを確かめるif ($value !== null) { ... }
型を決めて受け取る関数の引数に型を書き、null を入れないようにする

WordPress の場合

  • 警告はプラグインやテーマの中から出ていることが多い
  • 自分で直すより、プラグインやテーマの更新を待つほうが安全
  • 更新されていないものは、代わりを探す
警告を隠すだけでは解決しない

本番では display_errors をオフにして画面に出さないのが基本。ただし隠しても書き方は直っていない。ログで洗い出して直しておかないと、将来の版でエラーになる。

8.0 から 8.1 でほかに変わったこと

  • 内部関数に null を渡すと非推奨の警告(strlen(null) など)
  • htmlspecialchars() などの既定が ENT_QUOTES | ENT_SUBSTITUTE に
  • MySQLi が既定でエラー時に例外を投げる
  • PDO(MySQL・SQLite)が数値を文字列でなく int / float で返す
  • 必須の引数より前にある、既定値つきの引数は必須扱い

よくある質問

この警告が出たらサイトは止まる?

止まらない。非推奨の警告なので今は動く。ただし将来の版ではエラーになる予定なので、早めに直す。

警告を消すだけではだめ?

画面に出さないのは正しいが、書き方は直っていない。ログで洗い出して直す。

WordPress のプラグインから出ている

プラグインの更新を待つか、代わりのプラグインを探す。プラグインの中身を自分で書き換えると、更新で元に戻る。

無料ツールPHP2Shell 脆弱性チェッカーPHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かります。

参考にした情報

この記事の情報

2026年10月22日時点の公開情報にもとづく。最新は php.net と、利用中のサーバー会社の告知を確認すること。

PHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かる。移行の相談もできる。

無料で診断する

この記事の著者

編集部