web-dev-qa-db-ja.com

nginxローカルホストでの500内部サーバーエラー

Linux Mint 17を使用しています。PHP 7.1またはPHP 7.2 nginxを使用して設定しようとしていますが、phpスクリプトにアクセスするたびに500 Internal Server Errorを取得します。 nginxまたはPHPを再起動しても、エラーは発生しません。

/etc/nginx/conf.d/default.confの内容は次のとおりです。

server {
    listen       80;
    listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/Host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        proxy_pass   http://127.0.0.1;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass unix:/var/run/php7.2-fpm.sock;
        #fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

私は緊急にこれを機能させる必要があるので、どんな助けでも大歓迎です。

編集する

500エラーを修正するには、worker_rlimit_nofile 100048を追加し、worker_connections100048に変更します。残念ながら、現在は「エラーが発生しました」と表示され、ログに次のように表示されます。

2018/02/11 21:53:23 [crit] 13219#13219: *1012 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", Host: "127.0.0.1"
2018/02/11 21:53:48 [crit] 13263#13263: *56464 connect() to 127.0.0.1:80 failed (99: Cannot assign requested address) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.0", upstream: "http://127.0.0.1:80/info.php", Host: "127.0.0.1"
1
Dan Bray

おっしゃったworkerの設定とは何の関係もないと思います。

また、2つの場所location ~ \.php$ {を指定しても意味がありません。私はあなたがalradeyが最初のものを取り除いたとあなたのコメントから読みました:

    location ~ \.php$ {
    proxy_pass   http://127.0.0.1;
}

良い。

次に、PHP-fpmが機能しない理由を調べます。

  • PHP-fpmがインストールされ、実行されていますか? service php7.2-fpm statusで確認する

  • ソケットファイルはどこに行きましたか?ソケット設定ファイルの設定をここで確認してください/etc/php/7.2/fpm/pool.d/

  • PHP-fpmがアプリケーションフォルダーに対する権限を持つ正しいユーザーを使用しているかどうかを確認します。

その他のnginx構成の問題:

  • try_filesを追加:

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
  • root html;セクションからlocation ~ \.php$ {行を削除します。

  • これらの2行をlocationセクションに記述しないでください。 location / { }なしで追加してください:

    root   /usr/share/nginx/html;
    index index.php index.html index.htm;
    
1
Bob