在Windows中使用COM执行php命令

时间:2016-02-16 20:51:36

标签: php windows

我尝试在php中执行此操作:

$cmd = 'ffmpeg.exe -rtbufsize 1500M -f dshow -i video="Microsoft® LifeCam Studio(TM)" full-video.webm';
$shell  = new \COM("WScript.Shell");
$shell->Run($cmd, 0, false);

如果我在命令行(cmd)中运行命令它正在运行,但是从php无效。如果我尝试回显命令,结果是:

ffmpeg.exe -rtbufsize 1500M -f dshow -i video="Microsoft® LifeCam Studio(TM)" full-video.webm

我认为是关于字符串enconding的事情,但我不知道。

2 个答案:

答案 0 :(得分:0)

听起来你真的想在这里使用exec:http://php.net/manual/en/function.exec.php

输出的差异是因为你输入的是utf-8字符,而不是告诉你的浏览器你希望它在输出时被解释为utf-8。

答案 1 :(得分:0)

我需要使用此命令使shell了解UTF-8。

chcp 65001

为了使这个永久化,我需要做以下事情:

  1. 开始 - >运行 - >注册表编辑器
  2. 转到[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. 将值更改为chcp 65001
  4. https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8

    $shell  = new \COM("WScript.Shell");
    $shell->Run(utf8_decode($cmd), 0, false);