自宅サーバーのOSをDebian8.0 Jessieに入れ直して、WordPressをバックアップから復元したらメディアのアップロードができなくなったトラブルの顛末です。記事を投稿しようにも画像がアップロードできないのです。直らなかったらどうしようとアセッたのですが、お恥ずかしい基本的ミスが時空を超えて発生したのが原因と判明したというお話です。
このページの目次
原因は子テーマのfunctions.php
先に結論を書きますと、WordPressを始めた頃に作った子テーマのfunctions.phpの記述がおかしかったのです。私はここのブログもそうですが、functions.phpには何も追加していないので最初に子テーマを作ったときにファイルを作成したままで、存在すら忘れていたのです。どうおかしかったかというと、このようになっていました。
<? ?>
間違いを探せクイズではありませんが、パッと見でおかしいと思わなくても不思議ではありません。下記のように直したら治ったのです。
<?php ?>
いままで動いていた不思議
いままで問題なく動いていたのですから不思議なものです。いろいろ試すのにfunctions.phpに追加したこともありましたが、その時も普通に動いていました。PHPかapacheのバージョンが変わったからでしょうか。いままで大目に見てくれてたやさしい担任先生が、クラス替えで厳しい先生になったという感じでしょうか。
- php5バージョン5.4.36 → 5.6.7
- apache2バージョン2.2.22 → 2.4.10
不具合内容
どういった不具合が発生したのか説明します。管理画面で投稿記事を書いていて「メディアを追加」ボタンを押して、パソコンの画像ファイルを選択してアップロードすると
エラー アップロード中にエラーが発生しました。後ほど再度お試しください。と出てアップロードできないのです。
メディアライブラリを開いても、サムネイルで画像が一覧表示されないのです。
同じメディアライブラリーですが、詳細表示というのか一覧表示のボタンを押すと、過去にアップロードした画像が表示されるのです。
初心の頃を思い出す
私がWordPressを始めた一年前、子テーマ作成方法をネットで調べたときに、style.cssについてはどのサイトも詳しく解説してたのに、functions.phpに関してはサラッと触れておしまいというのが多く、どうやって初期ファイルを作るのか結構ググっても見つけられなかったのを思い出しました。それで出来上がったのがアレだったのです。
そして、ひさしぶりに子テーマの作り方を調べていたら、推奨の子テーマ作成方法が変わっているではありませんか。それで前回の記事のネタになったのでした。
最後にひとこと
ネットで調べると同じような現象はよくあるトラブルのようです。いろいろな原因があり、切り分けが必要だと思いますが、一応functions.phpが原因という可能性もありますよということでした。