WordPress: PHPを5.6から7.3に更新したら、プラグインエラー2件、本文表示失敗
このブログの設置サーバのPHPを5.6から7.3に更新した。
サイトも表示できてphpinfo()は動作したが、WordPressが動作しなくなってしまった…。いや、お前がPHP更新しろというから作業したんだが…。
wp-blog-header.php内の下記の読み込みで失敗しているらしい。
require_once( dirname( <strong>FILE</strong> ) . '/wp-load.php' );
wp-config.phpを経由してからの wp-settings.php
各記事はタイトルしか表示されなくなっているのだが、編集画面だと本文もきちんと取得されているし、タイトルしかない各ページのHTMLソースを眺めるとソーシャルボタンへの情報として本文のデータが埋め込まれている。なので、動作していないとまではならないらしいんだけど…。
wp_includes/post-template.php内のthe_contentを見ると、get_the_contentでのデータ取得はできているのだが、その後のapply_filters(‘the_content’, $content)を実行すると内容が空になってしまうみたい。どこかでadd_filterされているものがエラーになっているのか?
includes/{default-filters,blocks}.php内でフィルタ設定が行われているようだが、これらをオフにしても結果は変わらず…。
the_contentのapply_filterをコメントアウトすると、(レイアウトは崩れるものの)本文は表示されるので、このフィルタ処理が原因のようなのだが。
自前のmemolinkプラグインでのエラーだった…。preg_replaceのeオプションでエラーになっていたみたい??
$ php foo.php PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in XXX/wp-content/plugins/memolink/memolink.php on line XXX
- 例えばPHPのpreg_replace関数でe修飾子を避ける – hnwの日記
- e修飾子はPHP 5.5からdeprecatedになっています。また、PHP7からは廃止されます。
- PHPのpreg_replace()で「The /e modifier is deprecated」となる場合の対処方法: 小粋空間
- PHP – PHP:preg_replaceからpreg_replace_callback()への差し替えについて|teratail
split()もなくなってる…。explode()で対応することにした。
- [PHP] PHP7でsplit関数は削除されたから… | マリンロード
- 「split関数」は PHP5.3.0 で非推奨となり、 PHP7.0.0 で削除されました。
- explode関数(正規表現を使わない場合)今後はこちら「explode関数」を使用しましょう。
PHP5⇒PHP7については、下記のような非互換性が。他の動作しなかったプラグインもこのあたりの問題があったのだろう。
WordPressが「最新PHPは高速化」と煽るから更新してみていて、まだ効果は確認できていないところだが、下記のようにPHP5とPHP7だと2倍との記事もあった。
- (PHP5とPHP7の速度を比較、2倍以上高速になるほどの違いとは – 【個人向け】レンタルサーバーの選び方)[https://serversenshi.com/php5-php7/]
また、ownCloud 10.0.10がPHP7.3だと動かなくなってしまっていて困ったが、ownCloud 10.3以降だと対応していて、急遽更新してなんとか動くようになった。
- Release Notes :: ownCloud Documentation
- ownCloud Server 10.3 officially supports PHP 7.3.
というか、元々は ownCloudのファイル暗号化機能だが動作しなくなっていて、それを動作するように設定しようとしたらPHP5だと対応できないみたいな表示もあってPHPを更新しようとしていた覚えも。
作業時に、occコマンドで更新しようとしたら、いくつかアプリが動かないとのエラー。とりあえず、disableにした。
2019-11-14T10:35:15+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace. 2019-11-14T10:35:15+00:00 Repair warning: Please install or update the following apps manually or disable them with: occ app:disable drawio occ app:disable files_clipboard occ app:disable rainloop 2019-11-14T10:35:15+00:00 Repair warning: For manually updating, see <a href="https://doc.owncloud.org/server/10.3/go.php?to=admin-marketplace-apps">https://doc.owncloud.org/server/10.3/go.php?to=admin-marketplace-apps</a> 2019-11-14T10:35:15+00:00 OCRepairException: Upgrade is not possible 2019-11-14T10:35:15+00:00 Update failed
ownCloudも同期が遅くて困っていたが、こちらも速度改善するといいのだが。