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

如何在Windows上通过PHP启动WSL的Linux可执行文件并捕获stdout?

你遇到的退出码 -1073740791 对应Windows系统STATUS_STACK_BUFFER_OVERRUN错误,绝大多数情况是PHP调用wsl时的路径、运行上下文不匹配导致的,可按以下方案逐一排查:

  • 使用绝对路径调用wsl程序
    你在cmd中执行的是带全路径的C:\wsl,但PHP运行环境的PATH环境变量和cmd登录用户的PATH不一致,直接写wsl会找不到程序,必须使用全路径调用。
    如果你的wsl程序自定义存放在C盘根目录,修改命令为:
    $cmd = 'C:\\wsl.exe echo "foo"';
    
    如果你使用的是系统默认安装的WSL,wsl.exe默认存放在C:\Windows\System32目录下:
    • 64位PHP直接使用路径:C:\\Windows\\System32\\wsl.exe
    • 32位PHP会被系统自动重定向到SysWOW64目录(该目录下没有wsl.exe),需要使用Sysnative虚拟路径访问:C:\\Windows\\Sysnative\\wsl.exe
  • 检查运行PHP的用户权限
    如果你通过web服务(Apache/Nginx等)运行PHP,默认web服务使用系统内置账号启动,没有权限调用当前登录用户配置的WSL环境。你可以先在CLI模式下用你登录Windows的账号直接执行PHP脚本,验证命令是否正常运行;如果需要在web环境使用,将web服务的运行账号修改为你当前登录的Windows用户即可。
  • 调整命令执行函数
    部分环境下exec对输出的捕获存在兼容问题,可以尝试替换为shell_exec或者proc_open测试:
    <?php
    $cmd = 'C:\\Windows\\System32\\wsl.exe echo "foo"';
    $out = shell_exec($cmd);
    var_dump($out);
    ?>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:02