lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

Xdebugでデバッグしていると504 Timeoutエラーとなる

概要

Dockerを使用したNginx + PHP-FPMの環境でXdebug + VSCodeデバッグしていると
いつの間にか504 Timeoutエラーになってしまったのでその回避策メモです。

目次

参考サイト様

環境

$ docker -v
Docker version 18.09.2, build 6247962
$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

PHP-FPM(7系)やNginxのバージョンはlatestです。

下記リポジトリを例に進めます。

github.com

事象

前述しましたがVSCodeからXdebugを利用してリモートデバッグを実行し、
ブレークポイントで1分以上経過するとタイムアウトエラーが発生する。

f:id:HM_Atlas:20190619231706p:plain

原因

Nginxのデフォルトタイムアウト値を超えてしまうため。

対策

対策としては下記の3つがあります。

  • php.inimax_execution_timeを設定する。
  • php-fpm.confrequest_terminate_timeoutを設定する。
  • nginx.conffastcgi_read_timeoutを設定する。

今回はnginxから渡されるfastcgiの値を変更します。
他、2つについては検証していません。

nginx.confを編集

server {
  # 省略
  location ~ \.php$ {
     fastcgi_pass   php:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     fastcgi_read_timeout 3600;  # 追加
     include        fastcgi_params;
  }
}

上記設定で好きなだけデバッグで変数を眺められる。

雑感

ネットないのつらい。