nginx+WordPressで新規投稿の保存ができずサイトを更新できません
- 評価
- クリップ 0
- VIEW 430
前提・実現したいこと
さくらのVPSを利用し、CentOS7上でnginxとWordPressのインストールを行いました。
インストールまで終えた時点で新規投稿のテストを行っています。
発生している問題・エラーメッセージ
投稿テストで”下書きを保存”および”公開”を行うと、『更新に失敗しました』というメッセージが表示され投稿に失敗します。ダッシュボードから”メディアのアップロード”は成功します
サイトのアクセスログを確認したところ,FastCGIがエラーを出力していることがわかりました。このエラーはnginxのPHP設定中にある SCRIPT_FILENAMEに起因しているというWebサイトをいくつか見たのですが,そこにある記述を参考にしても問題が解決せず,どのように修正してよいかわかりません。適切な設定方法を知りたいです。
アクセスログのエラーメッセージとnginxの設定ファイルは以下の通りです。
(サーバ名はxxx.jp、URLはyyyに置き換えています)
投稿後の試験について追記
質問時の状況では、ドキュメントルート直下ではなくxxx.jp/blog/ のようにサブディレクトリにWordPressをインストールしていました。
調べてみると、nginx+WordPressの環境では、サブディレクトリにWordPressをインストールしたい場合には追加の設定が必要とのことでしたので,blogディレクトリにアクセスした場合にエイリアスを追記するようにしてみましたが,やはりうまくいきませんでした。
また、このことから一旦WordPressを削除して、xxx.jp/ 直下に再インストールしてみたところ、正常に動作することがわかりました。
エラーメッセージ
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: xxx.jp, request: "POST /yyy/wp-json/wp/v2/posts/17?_locale=user HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxx.jp", referrer:"https://xxx.jp/yyy/wp-admin/post.php?post=17&action=edit"
該当のソースコード
server {
listen 80;
server_name xxx.jp;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl;
server_name xxx.jp;
access_log /var/log/nginx/xxx.jp-access.log main;
error_log /var/log/nginx/xxx.jp-access.log;
root /home/username/xxx;
ssl_certificate /etc/letsencrypt/live/xxx.jp/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.jp/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
yukky1201
2019/07/29 10:11
wordpressに関するphpでのみエラーがでるのか、php全般でエラーが出るのか切り分けはできていますか。
forest-in-mind
2019/07/29 20:50
返信くださいましてありがとうございます。
wordpress以外では,例えばphpinfo(); などの単純な記述は問題なく動いています。
質問後に改めて検索をして、問題はnginx+wordpressの場合にドキュメントルート直下ではなくサブディレクトリにインストールするとエラーが起きることがあるというのを見つけました。この点を確認したので質問文に追記します。