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のダウンロードページ

解決方法

  1. phpQueryのソースを修正しPHP8に対応させる
  2. phpQueryを使用するコマンド実行時のみ php7.4 で実行するようにする
  3. 別のツールを使ってみる「PHP Simple HTML DOM Parser」等
  4. 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

コメントを残す

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

CAPTCHA