Help us understand the problem. What is going on with this article?

wordpress PHP バージョン変更に伴うちょっとしたエラー

内容はタイトルのとおりです。ちょっとしたエラーと書いていますが、全然ちょっとしていませんでした。むしろ、致命的でした。危なかった。。。

経緯

案件で、すでにあるwordpress公開サイトをデザイン・システムをほぼ変えずに別ドメインとして、公開というものがありました。(同一のお客さんだが、あくまで別サイトとして公開)
ほぼ変わらないので、DB・テーマファイルを一式、複製したら終わるだろうと思っていましたが油断。。。

開発環境

サーバー かごやネット
php 7.2.12
MySQL 5.6.36
WordPress: 5.3.2

発生したエラー

確認したものから順番に列挙します。

プラグインの更新、削除、新規追加の際にエラーが出る。

例えば、アップデートの際には {“success”:true,”data”:{“update”:”plugin” ... } と表示される。一見アップデートできていないように思うが、リロードしたところ、新しいバージョンに変わっていた。お客さんの方で、プラグインは触らない箇所なので、後で解決しよう(まあいいか)と思っていた。

某プラグイン使用に伴うエラー

某リダイレクトのプラグインを使用した際に、chrome検証にてなにやらエラーが出ていた。詳細を見ると、読み込みのjqueryに関係があるようだった。
しかし、サイト内のJSは機能しており、そのプラグインも機能していそうだったので、これまた後回しにすることにした。

メディアの一覧表示の切り替え

メディアでは、一覧表示でリスト表示グリッド表示を切り替えることができる。しかし、グリッド表示に変更した際に、上のくるくるがずっと回ったまま一向に切り替わらなかった。
これに関しては、wp-admin/admin-ajax.phpの記述を変更することで回避できるとのこと。

@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );

if(in_array($_POST['action'], array('query-attachments', 'send-attachment-to-editor'))){
@header('Content-Type: application/json; charset=' . get_option('blog_charset'));
}else{
@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
}

試しに変更したところ、正常に切り替えができたので良しとした。

アイキャッチ画像の変更・削除ができない

タイトル通り致命的です。通常、登録画面にてアイキャッチ画像を削除を押すと、画像指定がクリアされる。逆にアイキャッチ画像を設定を押すと、メディアライブラリが立ち上がり、画像指定ができる。しかし、全く効かない。
お客さんの方で、投稿を追加する際にアイキャッチの設定が不可欠なので、どうにかしなければいけなかった。(画像登録用のカスタムフィールドを追加するなど、緊急対策はできるが仕様が変わってしまうのでなしとする。)

仮説と結果

  • wordpressのバージョンを変更する
    ベースのサイトのwordpressが4.9.13だったので、ダウングレードしてみたが、もろもろ解決はしなかった。
  • プラグインの停止
    プラグインを一つずつ、停止し様子を見たが解決せず。ベースサイトと仕様プラグインの種類は同じだが、全て現状の最新版にアップデートしていた。プラグイン自体を停止して変化なしなら、プラグインのダウングレードをしても、無意味だろうと考え断念。
  • 某プラグイン使用に伴うエラーに、jquery関連のエラーがでていたので(v1.12.4)、にjqueryバージョンを最新版に変更してみた。(こレで解決しても、wpのjqueryのバージョン変更は非推奨)やはり解決せず。
  • wordpressの再インストール
    悪あがきでした。
  • PHPバージョン
    ベースサイトのPHPバージョンは7.0.28だったので、今回のサイトではPHPのバージョンを上げていた7.2.12。 正直、こいつの影響だろうと予想はしていたが、サーバーあまりわからないので、なるべく触れたくなかった。それに、7.0系はサポートが切れているので、変更したくなかった。
  • functions.php
    ぐぐると出てくるが、この手のエラーは、functions.phpコード内に無駄な空きスペースがあるときに見受けられるそう。大まかに確認したが、おかしな点は見つからず。

解決策

解決策が見つからず、どうしようか悩んでいた際に何気なくかごやのサイトを見ているところ、一つのよくある質問に行き着いた。

なにやら下記のように書かれていた
PHP バージョン変更後、レイアウトが崩れたり文字化けが発生する。

PHP のバージョン変更後、以下の現象が発生することがあります。
文字化けが発生する
CSSを利用しているサイトの一部でレイアウトが崩れる
WordPress 管理画面のレイアウトが崩れる
WordPress でプラグインのインストールや削除時にエラーになる

共用サーバーで CGI 版 PHP (バージョン 5.5系 / 5.6系 / 7.0系 / 7.1系 / 7.2系)をご利用の場合は、 下記内容を記述した .user.ini ファイルを該当のディレクトリに設置することで回避可能です。
⇒ PHP設定を .user.ini で変更する
output_handler = none

関係ないものもあるが、「WordPressでプラグインのインストールや削除時にエラーになる」に関しては、該当していたので試しに.user.iniを追加したところ、見事解決!
正直なところ、かごや独自の解決策なのか、同じような場合に解決できる万能策なのかわからないのですが、ひとまずは安心しました。
もろもろの問題は解決され、正常に投稿できました。

終わりに

長々と書きましたが、結論を言うと自分の情報不足でした。笑
今回発生したのエラーはググってもあまり解決策が見つからず。灯台下暗しというか、最初から公式サイトを確認すればよかったかな。(ほぼ一日無駄にしてしまいました。。。)
いつまでも、一つの仮説にとらわれずに切り替えが必要ですね。。。

同じようなエラーで困っている方、お試しください。

参考視させていただいたサイト:https://web-diy.jp/2017/04/170421_01/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away