こんにちは
GDを使って、テーマをカスタマイズしていないですか?
外観のテーマの管理画面に遷移
外観のテーマの管理画面とは、現在のテーマや、他のテーマへの切り替えを行うページのことですか
プラグインをすべてはずし、twentyeleven(カスタマイズしていないもの)に差し替えても、同じ動作をしますか?
トラブルに対して、どんなことをこれまで確認したか具体的な内容が、不足しているように見えます。不具合事項から、原因を見出すことは難しいと思いますので、より具体的に書いたほうが、回答がつきやすいと思います。
何分、初心者で、wordpressを使用するのは今回が初めてです。そのため、的外れな質問をしてしまっていたらすみません。
以下、今回行った手順です。
①PHPのインストール
以下を修正
(1)環境変数:C:¥php;
(2)php.ini:extension_dir = “C:¥php¥ext”
date.timezone = Asia/Tokyo
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
include_path = “.;C:¥php¥includes”
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
extension=php_gd2.dll
②IISのインストール
(1)CGIにチェックを入れてインストール
(2)「http://localhost/」にて表示確認済み
(3)IISマネージャより、各設定済み
(4)phpinfo()にて、PHP動作確認済み
③mysqlのインストール
(1)mysqlへのログイン確認済み
(2)データベース作成済み
④wordpressインストール
(1)wp-config.phpを以下のように修正
define(‘DB_NAME’, ‘testdb’);
define(‘DB_USER’, ‘wp_test’);
define(‘DB_PASSWORD’, ‘wp_testdesu’);
(2)wordpressにアクセスし、インストール
(3)インストールに成功したので、ログイン
(4)特に何も変更せず、デフォルトのテーマを使用
(5)この状態で、カスタムヘッダにてデフォルト画像の変更
上記が行った手順です。
この状態で、カスタムヘッダの画像を変更(アップロード、またはデフォルトの画像を選択)し「変更を保存」を押下した際、外観のページに遷移します。
以下、上記を確認するために行った作業です。
①phpinfoで、gdが有効になっているか。⇒ 有効
②今回使用するフォルダの権限の確認。⇒ とりあえず全てフルコントロールに設定済み
③アップロードする際に一時的にフォルダに保存される「C:\Windows\Temp」の権限もフルコントロールに設定済み
④投稿ができるか。⇒ 投稿できる
⑤投稿で画像がアップロードできるか。 ⇒ アップロードできる
⑥プラグインが追加できるか。 ⇒ できる
⑦テーマの変更ができるか ⇒ できる
同様の環境を用意し、上記と同じ設定で確認したところ、GDを有効にしない場合はエラーページに遷移しました。GDを有効にした場合、正常にヘッダの変更ができます。
しかし、本番環境では、エラーページに遷移せずに、GDの有効関係なく外観のページに遷移してしまいます。
今週中にはお客様に納品しないといけないため、とても困っています。
宜しくお願い致します。
調査を続けていますが、以下になっていることがわかりました。
・wordpressインストールでのデフォルトの状態でテストサーバと、本番環境でのカスタムヘッダ変更時のパスが異なっている。
本番環境
<input type=”hidden” name=”_wp_http_referer” value=”/honban/wp-admin/themes.php” />
<p class=”submit”>
<input type=”submit” name=”save-header-options” id=”save-header-options” class=”button-primary” value=”変更を保存” /></p>
テストサーバ
<input type=”hidden” name=”_wp_http_referer” value=”/test/wp-admin/themes.php?page=custom-header” />
<p class=”submit”>
<input type=”submit” name=”save-header-options” id=”save-header-options” class=”button-primary” value=”変更を保存” /></p>
どういう設定をすれば、テストサーバのように「page=custom-header」がパスに設定されるのでしょうか。
本番環境とテストサーバでのインストール手順は一緒です。
このような現象が起きるのはどうしてわからないでいます。
どなたかご教授ください。
宜しくお願い致します。
こんにちはtadanoさん
<input type="hidden" name="_wp_http_referer" value="/honban/wp-admin/themes.php" />
のリファラの値は、 wp_referer_field() という関数が生成しているものです。
要は、$_SERVER[‘REQUEST_URI’] を表示しているわけですが、IISがこれを取得できていないんじゃないか?という素朴な疑問があります。
テスト用のファイルを作成して、$_SERVER[‘REQUEST_URI’] クエリストリングを含めて取得できているかどうか、WEBサーバでチェックしてみてはどうでしょうか
参考
http://wordpress.org/support/topic/howto-fix-problems-associated-with-iis-7-request_uri-variable?replies=1
回答、ありがとうございます。
以下にて確認してみました。
①
<?php
foreach($_SERVER as $key => $value){
echo $key.”:”;
echo $value.”
\n”;
}
?>
②
<?php
echo $_SERVER[‘REQUEST_URI’];
?>
テストサーバと本番環境にて確認しましたが、差異はありませんでした。
どのタイミングでカスタム関連のパスは設定されるものなのでしょうか。
wordpressをインストールした際に、自動でパスが設定されるものなのでしょうか。
(その情報はDBに保存されているのでしょうか。)
宜しくお願い致します。
こんにちは、
2の件は
http://example.com/test.php?page=custom-header
等として、クエリの値が取得できたということで良いんですか?
どのタイミングでカスタム関連のパスは設定されるものなのでしょうか。
wordpressをインストールした際に、自動でパスが設定されるものなのでしょうか。
(その情報はDBに保存されているのでしょうか。)
パスは、保存されていません。現在の、パスを $_SERVER[‘REQUEST_URI’];を使って取得して、_wp_http_refererの値としています。
参考URLに示したようにIIS7ぐらいまでは、$_SERVER[‘REQUEST_URI’]が、クエリストリングを取得しないということが言われており、そのことは、検索すればたくさん見つかるはずです。
IIS7.5でそのバグがfixされているかどうかは、私はIISユーザでないので解らないのです
このため、$_SERVER[‘REQUEST_URI’]が正しく、現在のURL(クエリ付の)が正しく取得できるかどうか、確認することをお勧めしたのです。
http://www.example.com/honban/wp-admin/themes.php?page=custom-header
としてアクセスしなければ、ヘッダーのオプションパネルは表示できないのです。
このURLからパスを取得して、フォームに埋め込むので、$_SERVER[‘REQUEST_URI’]に問題があると考えているのです。