コアサーバー上のWordPressでメディアをアップロードした時のエラーを解決する

photo credit: splorp via photopin cc

コアサーバー(CORESERVER.JP)、厄介です。

WordPressでメディアをアップロードした時に3つのエラーが出たのですが、そのエラーを解決したら2つ目のエラー、さらに3つ目のエラーとマトリョーシカ状態に。しかも3つ目のエラーは「session.save_path」の設定関係で、ネット上にも解決方法が見つからずほぼ死にかけて生まれ変わりそうになりました。

1つ目のエラーはパーミッションが原因

メディアに画像を追加しようとしたら、

ディレクトリ wp-content/uploads/[西暦]/[月] を作成できませんでした。この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか ?

というエラーメッセージが出てしまいました。これはパーミッションPHPのセーフモードが有効になっていることが原因のようです。

このエラーに関しては沢山のブログで解決方法が書かれていますので、その中から参考になる記事を1つご紹介します。

2つ目のエラーは「BOMあり」が原因

2つ目のエラーはphpが吐き出しました。

これはファイルにBOM(バイトオーダーマーク)が付いている時に出るエラーです。「headers already sent by()」の括弧内で指定されているファイルがBOMありだよ、と警告しています。(いつの間に付いたんだ…)

今回はテーマファイルのfunctions.phpが「BOMあり」になっていました。ファイルをBOMなしにするには、エディタで「BOMなし」にして保存する必要があります。

例えばDreamWeaverでBOMなしファイルにするならこの記事が参考になります。

WebStorm/PhpStormでBOMを削除する方法はこちらの記事を参考にして下さい。(というか僕が書いた)

3つ目のエラーはsession.save_pathがエライことになってるのが原因

正直詳しい原因が分からなかったので見出しを濁してしまいましたが、こんな3つ目のエラーをphpが吐き出しやがりました。

推測ですが、「session.save_pathで設定されているディレクトリが見つからないよ、どうしてくれるんだい」といった感じでしょうか。

なので僕が行った解決策は、php.iniにsession.save_pathの設定を書いてやり、次いでtmpフォルダも用意してあげる、という手順です。

ちなみにこれ、メディアに画像をアップロードした時に2つ目のエラーとセットで出てきました。アップロード時にwp-admin/async-upload.phpのファイルが動いてエラーが起きています。

コアサーバーはphp.iniを管理画面から設定することは出来ません。設定を適用したいディレクトリ各々にphp.iniを置かなければいけない仕様になっています。

今回はwp-adminディレクトリにあるphpファイルが動く時にエラーが起きていたので、wp-adminディレクトリにphp.iniを置きました。

session.save_pathエラー解決の手順

まず、以下の記述をしたphp.iniを用意します。tmpの後ろにスラッシュは付け足さないで下さい。(テキストファイルやエディタで作成します)

このphp.iniをエラーが起きているphpが入ってるディレクトリに置きます。僕と同じエラーが出ている場合はwp-adminディレクトリに置いてください。

次に一時ファイルを保存するディレクトリを用意します。

FTPのルートアカウントでFTPサーバーにログインし、ルート直下に「tmp」という名前のフォルダを作成します。

こうすると、一時ファイルの保存フォルダにphpがアクセス出来るようになりエラーが解決されます。

.htaccessでも設定出来るかも

php.iniにsession.save_pathの設定を記述する方法を取りましたが、htaccessに記述することでも設定を適用出来るかもしれません。

試してないので確かではありませんが、こちらの記事を見る限り、設定出来そうな気がします。(出来なかったらやはりphp.iniでやりましょう)

ちょっと今はコアサーバーを弄れる環境がないので試せません。


…WordPressならエックスサーバーが良いですよ(ボソッ)



photo credit: splorp via photopin cc

最終更新日:2014年9月28日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/coreserver-wordpress-error/trackback/