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

Windows环境下PHP exec()添加2>&1突然失效问题求助

解决方案:Windows下PHP exec()中2>&1失效问题
  • 显式通过cmd.exe执行命令
    最近Windows更新可能导致PHP的exec()不再默认通过系统shell解析命令,而是直接调用可执行文件,使得2>&1这类shell重定向语法被当作参数传递给程序,而非由shell处理。解决方法是显式调用cmd /c来包裹命令:

    exec('cmd /c "ver 2>&1"', $out, $code);
    // 此时$code应为0,$out包含系统版本信息
    

    原理是cmd /c会启动命令行解释器,由它来解析重定向逻辑,确保2>&1被正确处理,将标准错误输出重定向到标准输出。

  • 改用shell_exec()函数
    shell_exec()本身就是通过系统shell执行命令,天然支持shell语法,无需额外处理重定向:

    $output = shell_exec('ver 2>&1');
    // $output会包含命令的所有输出(正常+错误)
    

    如果需要获取返回码,可以结合$?变量(需在shell_exec之后立即调用):

    $output = shell_exec('ver 2>&1');
    $code = $?;
    
  • 验证PHP配置(可选)
    可以检查php.ini中的disable_functions项,确认exec、shell_exec未被禁用,排除配置层面的潜在影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:27:07