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

Laravel Process无法找到Node:Windows环境下的解决方法咨询

解决Laravel Process组件在Windows下无法找到Node的问题

问题原因

Windows系统中,Laravel内置服务器(php artisan serve)启动的进程可能未继承完整的系统/用户PATH环境变量,导致Process组件调用cmd时无法识别node命令。从echo %PATH%输出字面量"%PATH%"也能看出,当前cmd实例未启用变量扩展,或环境变量未正确加载。

解决方案

1. 直接指定Node的完整路径

绕过环境变量,直接使用node.exe的绝对路径调用:

use Symfony\Component\Process\Process;

$process = new Process(['C:\Program Files\nodejs\node.exe', '-v']);
$process->run();
echo $process->getOutput();

注意:替换为你实际的Node安装路径,可通过cmd执行where node查看路径

2. 手动传递环境变量给Process

显式将Node路径加入Process的环境变量,或强制继承系统环境:

use Symfony\Component\Process\Process;

// 方式一:手动添加Node路径到PATH
$env = $_ENV;
$env['PATH'] .= ';' . 'C:\Program Files\nodejs'; // 替换为你的Node路径

$process = new Process(['node', '-v']);
$process->setEnv($env);
$process->run();
echo $process->getOutput();

// 方式二:强制继承系统环境变量
$process = new Process(['node', '-v']);
$process->inheritEnvironmentVariables();
$process->run();
echo $process->getOutput();

3. 从系统cmd启动Laravel服务器

确保Laravel进程继承完整的系统PATH:

  • 按下Win+R输入cmd打开系统命令提示符
  • 切换到Laravel项目目录
  • 执行php artisan serve
  • 重新测试Process调用代码

4. 启用cmd变量扩展或使用Shell命令行模式

通过强制启用cmd变量扩展,或直接使用Shell命令行语法:

use Symfony\Component\Process\Process;

// 方式一:启用cmd变量扩展
$process = new Process(['cmd', '/V:ON', '/C', 'node -v']);
$process->run();
echo $process->getOutput();

// 方式二:使用Shell命令行模式
$process = Process::fromShellCommandline('node -v');
$process->run();
echo $process->getOutput();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:46:06