タイトルが長くなるので、ちょっと略語で書いちゃいましたが、Windows Web Server 2008のサーバ上で、WordPressを構築している場合、メディアライブラリを使って画像をアップロードした際に、サムネイルが表示されない場合があります。
私も、これを解決するのに数週間ほど時間を費やしたので、チェックする項目を列挙し、備忘録として残しておきます。
環境: Windows Web Server 2008 + PHP 5.3.1 + WordPress2.9.2
不具合時の状況:
- WordPress/wp-content/uploadsが保存先で、書き込み権限が与えてある
- PHPは、FastCGIにて動作している
- GDライブラリは有効になっている
- WordPressのメディアライブラリにて新規追加すると、アップロード自体は出来ている
- アップロードした画像は、ウェブアクセスすると表示されない
- Windows Web Server 2008の認証は、匿名が有効になっている
- Windows Web Server 2008の匿名アクセスは、IUSRである
原因究明してみると、メディアライブラリ新規追加でアップロードした画像(uploadsに保存された)は、IIS_USRSでのアクセスが読み書きの権限がない状態となるのが原因のようです。
アクセス権限が原因であるのが判明したわけなので、セキュリティオプションで、uploadsフォルダをIUSR、IIS_USRSともフルアクセスに設定する。 だが、全く症状が変わらず。
Windows Serverでは、アクセス権限の継承やらが、かなり複雑になってるので、Linuxで慣れているせいもあって、かなり難解です。
このアクセス権絡みに、かなり時間を費やしたわけですが、実際は、違うところに原因があったようです。
まず、php.iniにupload_tmp_dirを設定する箇所があるのですが、アホな事に、重複して同じ記述を書いてました。 orz
それが原因で、いくら編集しても別の設定が有効になっていたわけです。
そんな分けで、タイトルのように、Windows Web Server 2008上のWordPressでサムネイルが表示されない時にチェックする項目です。
- php.iniは、PHPフォルダ内かC:\WINODWS下のどちらかに置いておく
- php.iniにGDライブラリ読み込み表記が書いてあるか確認
- php.iniにupload_tmp_dir = “C:\TEMP/”のようなテンポラリフォルダを指定する
- このフォルダをIUSRに読み書き・変更の権限を与える
- WordPress/wp-content/uploadsフォルダに、IUSR、IIS_USRSのアクセス権限をフルアクセスに指定しておく
- アクセス権限を与える場合は、親を継承する場合があるので、継承なしにしておく
- php.iniを編集した場合は、IISを再起動する
- WordPress/wp-config.phpに作業用ディレクトリ指定を表記しておく
define (‘WP_TEMP_DIR’, ‘C:\TEMP/’);
確認する項目としては、これ位でしょうかね。
最後は、phpinfo();で、じっくり確認すると良いかもしれません。
今回、ネット上で、この辺りの問題に関して検索したのですが、なかなか見つからないので、Windows Web Server 2008上でWordPressを利用してる方は、あまり多くないようですね。
コメント
[…] 参考・こちらとこちら […]