概要
Dockerを使用したNginx + PHP-FPMの環境でXdebug + VSCodeでデバッグしていると
いつの間にか504 Timeout
エラーになってしまったのでその回避策メモです。
目次
参考サイト様
- debugging - nginx php-fpm xdebug netbeans can start only one debug session - Stack Overflow 🔗
- Nginx+PHP-FPMでタイムアウトを伸ばす | ハックノート 🔗
- Module ngx_http_fastcgi_module 🔗
環境
- Mac OS X Mojave 10.14.4
- Visual Studio Code Version: 1.33.1
- PHP Debug Version: 1.13.0
$ 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
です。
下記リポジトリを例に進めます。
https://github.com/Lycheejam/php-crud-sample 🔗
事象
前述しましたがVSCodeからXdebugを利用してリモートデバッグを実行し、
ブレークポイントで1分以上経過するとタイムアウトエラーが発生する。
原因
Nginxのデフォルトタイムアウト値を超えてしまうため。
対策
対策としては下記の3つがあります。
php.ini
でmax_execution_time
を設定する。php-fpm.conf
でrequest_terminate_timeout
を設定する。nginx.conf
でfastcgi_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;
}
}
上記設定で好きなだけデバッグで変数を眺められる。
雑感
ネットないのつらい。