【Nginx】Docker上のnginx + laravelで500番エラーが発生した時のデバッグ方法

docker-prograshi(プロぐらし)-kv Docker
記事内に広告が含まれていることがあります。
[PR]

docker上に構築したnginx + laravelで作成したプロジェクトで500番エラーが発生した時のデバッグ方法について。

状況

  • 500番エラーが発生。
  • docker上ではサーバーが起動している。
  • consoleにはエラー表示なし。

対処法

nginxのエラーログを確認する。

1. エラーログの場所を確認する

ログの設定は/etc/nginx/nginx.confに記述がある。

cat /etc/nginx/nginx.conf



▼nginx.confの例
例えば以下の場合はerror_log/var/log/nginx/ディレクトリ配下にあることがわかる。

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    server_tokens off;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    server_names_hash_bucket_size 128;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

2. dockerコンテナの中に入る

docker exec -it コンテナ名 bash

3. ファイルの確認

[root@xyz228594eb /]# ls /var/log/nginx/
access.log  error.log  pj-name.access.log  pj-name.error.log

末尾がerror.logのファイルが存在する。ここにエラーログが入っている。

4. ファイルの中身を確認

[root@xyzb228594eb /]# cat /var/log/nginx/pj-name.error.log

以上。

エラーの例

2021/04/20 09:39:02 [error] 11#0: *29 FastCGI sent in stderr: “PHP message: PHP Parse error: syntax error, unexpected ‘?’ in vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 500” while reading response header from upstream, client: 192.168.96.1, server: local.xyz.jp, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php-fpm/php-fpm.sock:”, host: “local.xyz.jp”

helpers.phpの500行目にsyntax errorとなる?が記述されている。

times($arguments[2] ?? null);

php7以降で使えるようになった??(null演算子)が使われているが、使用注のバージョンがphp5だったダメエラーが発生。

タイトルとURLをコピーしました