WP-Cronが正常に作動しません。
-
こんにちは。いつもお世話になっております。
以前は問題なくWordPressを利用できていたのですが、諸事情で再インストールする事になりました。利用しているサービスはさくらレンタルサーバー・簡単インストール、独自ドメイン接続済みです。
***.sakura.ne.jp ( /home/***/www/ )
├ ディレクトリ example.com ( /home/***/www/example.com/ ) →1番
└ ディレクトリ ***.sakura.ne.jp/test/ ( /home/***/www/test/ ) →2番このように1番ディレクトリに独自ドメイン(example.com)を接続しています。1番ディレクトリにWordPressをインストールして使用したいと思っていますが、どうもWP-Cronが正常に動作していないようです。
自分なりに調べて「WP Crontrol」というプラグインを使いwp-cronが動いているか調べたところ以下のようなメッセージが表示され正常に動いていない事が分かりました。パーミッションも問題なく、プラグインも他にON無し・テーマデフォルト・本当の初期状態でもエラーが出てしまいます。
“サイトの WP-Cron システムへの呼び出しが頻発する問題がありました。 つまり、サイトの WP-Cron イベントが機能しない可能性があります。問題: 予期しない HTTP 応答コード: 403。”
2番目のディレクトリではエラーも出ずに正常に動いているようです。
新たにWordPressがインストール完了・正常に動作せず非常に困っています。
お手数ですが、回答・対応お待ちしています。
-
fm…
403ってことは権限なしだから
1番目のほうのディレクトリの権限がおかしくなってるとかではないじゃないでしょうか?
FTPまたはターミナルから権限を777にしてみてください(危険ですが。。
ターミナルからやる場合は
sudo chmod 777 該当のWordPressディレクトリ とやればできるはずです。こんにちは。早速のご返答ありがとうございます。
今も昔も設置しているディレクトリパーミッションは全て705(ファイル系は604)なので特に問題ないかと思います。試しに該当のWordPressのディレクトリを777にしてみましたところ、500エラーが出てログインできない状態になりましたので、すぐ705に戻しました。
質問のタグをいじろうと思いやっぱり止めたところ、「この投稿は自動システムによって承認待ちとなっています。72時間以内に審査されます。」と表示されてしまいました。初めての利用なので至らぬところがありまして、申し訳ありません。
こんにちは。認証待ちの解除に時間がかかりました。まだ解決していないため回答はまだ募集しています。引き続きよろしくお願いします。
補足致します。さくらレンタルサーバーの簡単インストール(初期)の何もいじっていない状態でもエラーが出ます。サーバーの方に問い合わせたところやはりお答えは頂けませんでした。
こんにちは。ご返答ありがとうございます。
以前からディレクトリ1・2番にはWAFを設定しています。
エラーログを見たところ、下記のようなログが沢山残っていました。
403を404に飛ばすようにしているせいか404エラーが多発しています。
以前はWAF設定していても大丈夫でした。/home/***/www/example/wordpress/wp-cron.php, referer: https://example.com/wordpress/wp-cron.php?doing_wp_cron=1509768174.7117269039154052734375
/home/***/www/example/file/error/404, referer: https://example.com/wordpress/wp-cron.php?doing_wp_cron=1509768174.7117269039154052734375貼っていただいているのはエラーログでしょうか?
エラーメッセージなどが何もなくてアクセスログに見えますが、どうでしょうか?また、前はWAFが有効で動いていたとしても、トラブルシューティングは可能性があるものを除外していく作業の積み重ねです。
問題解決のためのチェックリストも参考にしてみてください。
早速のご返答ありがとうございます。
以前は動いていても駄目なのですね。知りませんでした。WAFはセキュリティの観点上ONにしておきたいのですが致し方ないのでしょうか・・・。
上記はエラーログですが、一部(IPアドレス)など除いて掲載してしまったので、
改めてエラーログ(一部伏せ字にしておきます)を載せておきます。[Sat Nov 04 XX:XX:XX.XXXXXX 2017] [access_compat:error] [pid 47107] [client 000.00.000.000:00000] AH01797: client denied by server configuration: /home/***/www/example/wordpress/wp-cron.php, referer: https://example.com/wordpress/wp-cron.php?doing_wp_cron=1509791976.8390889167785644531250
[Sat Nov 04 XX:XX:XX.XXXXXX 2017] [access_compat:error] [pid 47107] [client 000.00.000.000:00000] AH01797: client denied by server configuration: /home/***/www/example/file/error/404, referer: https://example.com/wordpress/wp-cron.php?doing_wp_cron=1509791976.8390889167785644531250一応質問の通り、簡単インストール(プラグインなど消した状態)でもなってしまったので、プラグイン・テンプレートの問題とも考えにくいですが、問題解決のためのチェックリストにあるものを確認をとってみようと思います。
WAFはダメだということではありません。
原因を調べるときにはWAFとの関連が原因である事を排除してしまうことには問題があると言っているだけです。
万が一WAFが問題である場合にはWAFが有効にされたままではいつまでも原因を見つけることが出来ません。
原因が別のところにあることが分かれば、WAFを有効にして運用すれば良いのです。エラーログを見ると、出力されているエラーコード
AH01797
はWebサーバーであるApacheが出しているエラーコードですので、SiteGuardが処理している403ではない気もします。.htaccessに何か関連がありそうな記述はないですか?
ご返答ありがとうございます。
.htaccessを見たところ、魚拓サービスの拒否IPがさくらレンタルサーバーだったみたいで、それが原因で403エラーになっていたみたいです。テスト設置していたWPも “example.com/test” 下だったので、.htaccessの影響を受けていたみたいです。お騒がせ致しました。
該当の記述を消し、403エラーは無くなったみたいですが、今度は “サイトの WP-Cron システムへの呼び出しが頻発する問題がありました。 つまり、サイトの WP-Cron イベントが機能しない可能性があります。 問題: Too many redirects。” と出て引き続きWP-Cronは正常に動いていないようです。
以下に参考になるかどうか分かりませんが、現在の.htaccessを掲載しておきます。
# SAKURS SSL
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule># BEGIN SAKURA Internet Inc.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
<FilesMatch “\.(css|js)$”>
ExpiresDefault “access plus 1 week”
</FilesMatch>
<FilesMatch “\.(gif|jpe?g|png)$”>
ExpiresDefault “access plus 1 month”
</FilesMatch>
</IfModule>
# END SAKURA Internet Inc.# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress# エラー画面カスタマイズ
ErrorDocument 401 /file/error/401
ErrorDocument 403 /file/error/404
ErrorDocument 404 /file/error/404
ErrorDocument 500 /file/error/500
ErrorDocument 503 /file/error/503# ネットアーカイブ拒否
Header always append X-Frame-Options SAMEORIGINorder Allow,Deny
Allow from alldeny from .us.archive.org
deny from 46.166.136.0/21
deny from 78.46.0.0/15
deny from 78.108.176.0/20
deny from 139.162.192.0/19
deny from 146.0.72.0/24
deny from 146.0.75.0/24
deny from 151.236.216.0/21
deny from 178.62.128.0/17
deny from 104.16.0.0/12wp cronのリダイレクトを除外しないといけないのではないでしょうか。
早速のご返答ありがとうございます。
提示されたURL先の方法だとうまく動作しなかったので、自分なりにWP-Cron除外について調べましたところ、下記に書き換える事で無事にWP-Cronが動作致しました。ありがとうございました!
参照URL:
http://wpblogdiy.com/domain/1027sslbackwpuperror/# SAKURS SSL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/wordpress/wp-cron.php$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>こんにちは。申し訳ありませんがもう一度質問させて下さい。
上記.htaccessだと何故かhttp→httpsにリダイレクトされなかったため、さくら独自の仕様のためかなと思い「常時SSL化プラグイン」を元に.htaccessを以下のように書き換えたところ、正常にhttpsにリダイレクトできたのですが、また以下のようなメッセージが出てWP-Cronが正常に動かなくなりました。
“サイトの WP-Cron システムへの呼び出しが頻発する問題がありました。 つまり、サイトの WP-Cron イベントが機能しない可能性があります。 問題: Too many redirects。”
# BEGIN Force SSL for SAKURA ★ここから書き換えました
# RewriteしてもHTTPS環境変数を有効にする
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1
# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !^/wordpress/wp-cron.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA ★ここまで書き換えました# BEGIN SAKURA Internet Inc.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
<FilesMatch “\.(css|js)$”>
ExpiresDefault “access plus 1 week”
</FilesMatch>
<FilesMatch “\.(gif|jpe?g|png)$”>
ExpiresDefault “access plus 1 month”
</FilesMatch>
</IfModule>
# END SAKURA Internet Inc.# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress解決方法を見つけたのでこちらにも掲載しておきます。ここで回答頂けなかったら自力の解決は難しかったです。改めて、回答頂きありがとうございました。
- トピック「WP-Cronが正常に作動しません。」には新たに返信することはできません。