PHP8.3で Undefined constant エラーが出たときの対処法
PHP8系では、未定義の定数や配列キーを参照すると Fatal error / Notice が発生しやすくなりました。
発生したエラー例
エラー内容
PHP Fatal error: Uncaught Error: Undefined constant “REDIRECT_URL” in …
エラー箇所
|
1 |
$dirname = $_SERVER[REDIRECT_URL]; |
原因
$_SERVER[‘REDIRECT_URL’] のようにブラケットを忘れて書いた場合、PHP は REDIRECT_URL を定数と解釈しようとしてエラーになります。
また、PHP8では未定後の配列キーや定数に対する警告がより厳格になっています。
対処法
このエラーを回避するには、まず変数が存在するかを確認してから代入する書き方に変更します。
具体的には次のように書き変えます。
|
1 |
$dirname = $_SERVER['REDIRECT_URL'] ?? ''; |
?? ” は値が存在しない場合に空文字を返す安全な書き方です。
他にも、次のようにisset()を使う方法もあります。
|
1 |
$dirname = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : ''; |
まとめ
- PHP8系では未定後の配列キーや定数を参照するとエラーになる
- 安全な書き方( ?? や isset() )を覚えておくと、アップデート時のトラブルを避けられる
![MARKLEAPS[マークリープス]](https://markleaps.com/blog/wp-content/themes/mkl/images/00_logo.png)