タグ: WordPress

CloudLinux環境に於けるBackWPupの「PHP Fatal error: Allowed memory size of …」への対応

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!!)確保しろ」というメッセージ自体そもそもおかしいだろ…ということでそれらしい情報をググってみましたが日本語でそれらしい情報に言及したサイトが見当たらなかったので、海外の技術板を中心に捜索してみたところ解決の糸口を発見。

「Revive Old Post」に於ける日本語タグの文字化け対策

過去記事をSNSへランダムに投稿するWordPress用プラグイン「Revive Old Post」を利用されている方は多いと思いますが、記事に付与したタグをハッシュタグとして利用するよう設定(「Create hashtags from Tags」)していると日本語のタグがURLエンコードされた形でポストされ文字化けした状態になってしまう不具合がありいつまで経っても修正される様子がないので痺れを切らして自分で直すことにしました。

Revive Old Postの最新バージョン7.5.0の場合、修正すべき箇所は「tweet-old-post/inc/core.php」の840行目付近。下記の1行を追加すればOKです。

沈みゆく「さくらのレンタルサーバー」を脱して「mixhost」で常時SSL化

情報セキュリティリスクへの懸念から各ブラウザベンダが非HTTPSなサイトを警告・排除していく方針を固めており、常時SSL化が世界的な急務となっています。

このような流れを受け、レンタルサーバ(ホスティング)各社は利用者向けに「Let’s Encrypt」等を用いた無償のSSL証明書発行機能の提供を急いでいるのですが、国内最大手の『さくらのレンタルサーバ』は自社が取り扱っている有償のSSLを利用させたいらしく中の人も「無償SSLに対応する予定はない」と公言。

大手の安心感をかって契約している個人や中小企業ユーザが大半であろうさくらのレンタルサーバですが、変化し続けるITの潮流について来れないようではただの”沈みゆく船”でしかないので早々に脱出を決意。複数のレンタルサーバを比較・検討したうえで「mixhost」に移転、このサイトも無事に常時SSL化が完了しました。

WordPressの画像を記事に紐づける

WordPressで構築されたウェブサイトを別のサーバに移転する際、FTPで「/wp-contents/uploads」配下に画像をアップロードしてもWordPressのメディアライブラリには一切表示されません。

これはWordPressがディレクトリ内を都度々々走査するのではなく、あくまでデータベース上に登録された情報に従っているため。これではさすがに記事作成の際に不便なので、これらの画像の存在をデータベースに認知させる「Media from FTP」などのプラグインが広く利用されているのですが、アップロード先の情報…つまり「それらの画像がどの記事で利用されているか?」という記事との紐づけ(アタッチ)情報まではセットされない模様。

実際、記事との紐づけ情報は無くても困らないというケースが大半だと思いますが、将来サイトの構成・レイアウト変更でいざ必要となった時にバタバタするのも嫌なので今のうちに…と思い、このような処理に特化したプラグインを探してみるも見つけきれず。ならば自力でなんとかしようと思い、phpMyAdminなどDBを直接弄れる環境から実行可能なSQLをこしらえました。

さくらのレンタルサーバがようやくPHP7.1に対応

頑なにPHP7導入を避けてきた「さくらのレンタルサーバ」ですが、さすがにこれではマズイと感じたらしくこのタイミングでPHP7.1が利用可能となりました

さっそく試してみましたが、WordPressを用いたサイトではレスポンスにほとんど違いを感じられず。さくらの場合、読み込み開始までにかかる時間の方がPHPの処理時間より断然長かったりするので、サーバ本体の基本性能が強化されない限り改善の実感は難しそう。

ただ、PHP7系ではCPUにかかる負荷も減少するためお馴染みの503エラーが出にくくなる?などのメリットはあるかもしれません。PHP5.6のサポートも永遠に続くわけではないので、切り替え可能な方は早めにPHP7に切り替えておきましょう。

形ばかりとはいえようやくPHP7に対応したさくらですが、来年には主なブラウザがSSL非対応ページを「安全ではない(Not secure)」サイトとして扱うようになることからLet’s Encryptなどの無料SSLへの対応予定無しと公言した同サービスからは今後大量の退会者が出ることが予想されています。実際、わたしも個人で抱える中小のお客さんのウェブサイトを別会社に移行済みだったりするわけで…。

数年後に「さくら?あったよね、そんな会社。」ってことにならなければ良いんですけど。

WordPress用プラグイン「Jetpack」にXMLサイトマップ生成機能が追加される

昨日公開されたWordPress用プラグイン「Jetpack by WordPress.com」のバージョン3.9に於いて、GoogleやBingといった主要な検索エンジン用のXMLサイトマップを自動生成する機能が追加されました。

利用を開始するにはJetpackの機能一覧画面で「Sitemaps」を有効化するだけ。

160122_jetpack

他にXMLサイトマップをご利用になっていた場合はあらかじめ無効化 or 削除しておきましょう。(バージョン3.X系の「Google XML Sitemaps」を利用されていた方はルートディレクトリ内の「sitemap.xml」及び「sitemap.xml.tgz」ファイルもFTP等で削除しておきましょう。)

出力される内容はJetpackにお任せする形となるためあれこれ詳細を弄りたい人には物足りない面もあるかもしれませんが、一般的にあh画像サイトマップの出力にも対応しているためSEO効果は高そうです。