You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

找不到Laravel Valet的Nginx与PHP配置文件,超时问题求助

解决Laravel Valet下长API请求的504超时问题

问题根源

日志显示upstream timed out (60: Operation timed out) while reading response header from upstream,说明是Nginx与PHP-FPM之间的连接超时,而非PHP脚本本身或curl的超时设置。最新macOS中Homebrew默认路径已变更,原/usr/local/etc不再是配置目录,需找到新路径修改Nginx和PHP-FPM的超时参数。

解决步骤

1. 修改Nginx的FastCGI超时设置

Apple Silicon架构的macOS中,Homebrew安装的Nginx配置路径为/opt/homebrew/etc/nginx:

  • 打开Nginx全局配置文件:
    nano /opt/homebrew/etc/nginx/nginx.conf
    
  • 在http代码块中添加或修改以下参数(设置值需长于API响应时间,示例为240秒即4分钟):
    fastcgi_read_timeout 240s;
    fastcgi_send_timeout 240s;
    fastcgi_connect_timeout 240s;
    
  • 若仅需针对单个Valet站点生效,可修改该站点的专属Nginx配置文件,路径为~/.config/valet/Nginx/{你的站点域名}.test,在location ~ \.php$块内添加上述fastcgi超时参数。

2. 修改PHP-FPM的超时配置

Valet使用Homebrew安装的PHP,找到对应PHP版本的配置文件(替换{PHP_VERSION}为你的实际版本,比如8.2):

  • 打开PHP-FPM的www.conf文件:
    nano /opt/homebrew/etc/php/{PHP_VERSION}/php-fpm.d/www.conf
    
  • 修改以下核心参数:
    ; 设置脚本最大执行时间,需大于API响应时长
    request_terminate_timeout = 240s
    ; 动态进程管理模式下,可调整空闲进程超时(可选)
    pm.process_idle_timeout = 240s
    
  • 同时确认php.ini中的对应设置(可通过php --ini命令找到php.ini路径):
    max_execution_time = 240
    

3. 重启Valet服务

修改配置后必须重启服务才能生效:

valet restart

关键说明

  • 代码中设置的ini_set('max_execution_time', ...)和set_time_limit()会被PHP-FPM的request_terminate_timeout参数覆盖,因此必须修改配置文件才能生效。
  • curl的CURLOPT_TIMEOUT仅控制curl请求本身的超时,若你的PHP脚本是被Nginx作为上游服务调用,需确保Nginx和PHP-FPM的超时设置均覆盖API所需时长。

内容的提问来源于stack exchange,提问作者Johnx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:02:57