根本原因是php cli被系统级超时机制中断,需同时调整php的max_execution_time(-d参数或专用php.ini)、ulimit -t(临时解除cpu时间限制)及wsl systemd的defaultlimitcpu设置。

PHPStorm 运行脚本时卡住或报 Process finished with exit code -1 怎么办
根本原因通常是 PHP CLI 的执行被系统级超时机制中断,而非 PHPStorm 本身限制。常见于脚本执行时间超过 max_execution_time(PHP 配置)、系统 ulimit -t(CPU 时间限制)或 WSL/容器环境的默认 timeout 策略。
- 先确认是否真超时:在终端直接运行
php your_script.php,看是否同样卡住或报错 —— 如果终端也失败,问题不在 PHPStorm,而在 PHP 环境或系统层 - PHPStorm 的「Run Configuration」里没有全局「超时设置」选项,它只是调用你配置的 PHP 解释器,所有超时逻辑由该解释器及其运行环境决定
- Windows + WSL 用户尤其要注意:WSL2 默认启用 systemd,某些发行版(如 Ubuntu 22.04+)会为用户 session 设置
DefaultLimitCPU=300,导致超过 5 分钟的 PHP 脚本被强制 kill,且不输出明确错误
怎么改 PHP CLI 的 max_execution_time
这个参数只对 CLI 模式生效,且必须在启动时通过 -d 或 php.ini 生效,ini_set() 在 CLI 下无效(除非未禁用该函数,但不可靠)。
- 在 PHPStorm 的 Run Configuration → PHP Script → 「Interpreter options」栏填:
-d max_execution_time=0(0 表示不限制) - 或更稳妥地:复制一份 CLI 专用的 php.ini(比如
/usr/local/etc/php/cli-phpstorm.ini),加一行max_execution_time = 0,然后在 Run Configuration 的「Interpreter path」下方点「…」→ 「Configure PHP interpreters」→ 编辑对应解释器 → 「Configuration file」指向这个 ini 文件 - 注意:不要改
php.ini中的default_socket_timeout,它影响的是 socket 连接(如 cURL、PDO MySQL 连接),和脚本执行时长无关
WSL / Linux 系统级 CPU 时间限制怎么绕过
当 php -d max_execution_time=0 script.php 仍被杀,大概率是 ulimit -t 或 systemd 的 DefaultLimitCPU 在起作用。
- 临时解除当前 shell 的 CPU 时间限制:
ulimit -t unlimited(仅对当前终端及子进程有效) - 若用 WSL2,检查 systemd 是否启用:
systemctl list-units --type=service | grep -i "user@.*\.service";如果存在,编辑/etc/systemd/logind.conf,取消注释并改为UserTasksMax=infinity,再执行sudo systemctl restart systemd-logind - 在 PHPStorm 中使用「Terminal」运行脚本前,先手动执行
ulimit -t unlimited,再运行php …—— 因为 PHPStorm Terminal 是独立 shell session,不会继承 IDE 主进程的 ulimit
为什么改了 php.ini 还没用
PHPStorm 可能根本没读你改的那个 php.ini。CLI 和 Web Server(如 Apache/FPM)用的是两套配置文件,而 PHPStorm 默认调用的是系统 PATH 下的 php 命令,它的配置路径得靠 php --ini 确认。
- 在 PHPStorm Terminal 里执行:
php --ini,看输出的「Loaded Configuration File」路径,确保你改的是这个文件 - 如果显示「(none)」,说明 CLI 没加载任何 ini,此时
-d参数是唯一可靠方式 - Mac 用户注意:Homebrew 安装的 PHP,CLI 配置常在
/opt/homebrew/etc/php/<version>/php.ini</version>,不是/usr/local/etc/php/<version>/php.ini</version>
-d max_execution_time=0 + ulimit -t unlimited + 确保 CLI php.ini 路径正确。别信“PHPStorm 设置里有个超时开关”——它真没有。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











