PHPのバージョンを8.1に上げたら、phpQueryで「Array and string offset access syntax with curly braces is deprecated」となって実行できなかった
さくらのレンタルサーバーを使用しています。
PHPのバーションを7.4から最新の8.1に上げました。
「サーバーコントロールパネル -> スクリプト設定 -> 言語バージョン設定」 からバージョン変更できます。
さくらのレンタルサーバ不具合
バッチ処理で、スクレイピングphpQueryを使用しており、そこでエラーが発生し実行できませんでした。
Array and string offset access syntax with curly braces is deprecated
原因
phpQueryがPHPの新しいバージョンに対応できていないようです。
2009年以来更新されていません。
解決方法
- phpQueryのソースを修正しPHP8に対応させる
- phpQueryを使用するコマンド実行時のみ php7.4 で実行するようにする
- 別のツールを使ってみる「PHP Simple HTML DOM Parser」等
- PHPをあきらめ、スクレイピングはPythonを使う
等が考えられると思います。
今回は2の「コマンド実行時のみ php7.4 で実行するようにする」にしました。
さくらのレンタルサーバーでは、過去バージョンのPHPも実行することができます。
実行ファイルを /usr/local/php/7.4/bin/php
にすれば、PHP7.4で実行されます。
$ /usr/local/php/7.4/bin/php -v
PHP 7.4.33 (cli) (built: May 9 2023 16:25:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
まとめ
今回は手っ取り早く「phpQueryを使用するコマンド実行時のみ php7.4 で実行するようにする」で対応しました。
今後は別のツール(PHP Simple HTML DOM Parser等)を使うようにしPHP8に対応していきたいと思います。
その他は今のところうまく動いています。
参考サイト
PHP8 で phpQuery を使う – Qiita
PHP Simple HTML DOM Parserを使ってスクレイピングする – Qiita