WordPressで構築したサイトのバックアップには「BackWPup」プラグインを利用しているのですが、サーバー(mixhost)側でマイグレーションが行われた後バックアップのジョブが必ず失敗するようになってしまいました。
[05-Mar-2019 02:04:14 UTC] PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 2746709976 bytes) in /home/xxxxxxxx/public_html/xxxxxxxx/wp-content/plugins/backwpup/inc/class-mysqldump.php on line 506
エラーログには上のようなメッセージがずらり。どうやらMySQL絡みの問題らしくバックアップ対象からデータベースを外せばジョブは問題なく完走しますが、それでは何の解決にもなっていないので調査を開始。
メッセージの内容からしてメモリ絡みの問題っぽいので、PHP.iniの「memory_limit」の値を上限まで増やしてみるも特段の変化はなし。
ってか、メモリを「2,746,709,976 byte(=約2.5GB!!)確保しろ」というメッセージ自体そもそもおかしいだろ…ということでそれらしい情報をググってみましたが日本語でそれらしい情報に言及したサイトが見当たらなかったので、海外の技術板を中心に捜索してみたところ解決の糸口を発見。
どうやらmixhostが利用しているOS「CloudLinux」で提供される最新のPHP 7.3(Alt-PHP update)では「mysqli」及び「pdo_mysql」がサポートされなくなった様子。これが不具合なのか恒久的な仕様変更なのかはっきりしませんが、CloudLinux側は「nd_mysqli」「nd_pdo_mysql」を利用するよう呼び掛けているようなのでPHP Selectorで設定変更。
「mysqli」と「pdo_mysql」のチェックを外し、代わりに「nd_mysqli」「nd_pdo_mysql」をチェックして保存するだけ。
これによりBackWPupのジョブも無事動作するようになりました。