PHP中的额外字符';Windows 7 CLI上的s exec()输出

PHP中的额外字符';Windows 7 CLI上的s exec()输出,php,windows,command-line-interface,composer-php,Php,Windows,Command Line Interface,Composer Php,没有任何明显的原因,我无法再更新我的Composer管理的依赖项。经过一些调查,结果表明PHP在使用其exec方法时会预先添加一个额外的字符 基本示例: php -r "var_dump(exec('echo lol', $output, $exit), $output, $exit);" 发出: string(4) "♀lol" array(1) { [0] => string(4) "♀lol" } int(0) 那♀字符实际上是FF(formfeed)字符(0x0C) 我

没有任何明显的原因,我无法再更新我的Composer管理的依赖项。经过一些调查,结果表明PHP在使用其
exec
方法时会预先添加一个额外的字符

基本示例:

php -r "var_dump(exec('echo lol', $output, $exit), $output, $exit);"
发出:

string(4) "♀lol"
array(1) {
  [0] =>
  string(4) "♀lol"
}
int(0)
字符实际上是
FF
(formfeed)字符(0x0C)

我的谷歌搜索把我带到这里:

但我的问题似乎与本主题中的问题不同,因为在本主题中,可怕的角色出现在
shell_exec
中,而不是
exec
。在我的例子中,它确实与
exec
一起出现

有什么想法吗?我想知道我是应该在这里发帖还是在SuperUser上发帖,如果这个问题不属于这里,请随意提出

编辑:顺便说一句,我使用的是64位Windows 7,在PHP5.4.12中使用Wamp:)

编辑2:php-v的输出:

PHP 5.4.12 (cli) (built: Feb 25 2013 00:29:22) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
php--ini的输出

Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         C:\wamp\bin\php\php5.4.12\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

好吧,对不起,我很愚蠢。答案一直就在我面前

我重新仔细阅读了我链接到()的作曲家GitHub上的问题。在这本书中,遇到问题的人说,他通过在Windows注册表中调用shell开始时执行的.bat文件(
HKCU\Software\Microsoft\Command Processor\AutoRun
)中删除对
cls
的调用,解决了这个问题

实际上,我在这里调用了一个.bat文件,用于处理一个无关的问题,其中包含对
cls
的调用。所以我的Windows和PHP都很好——我只是设置了一些导致问题的东西,直到现在我才意识到这一点


很高兴知道这种类型的东西会干扰PHP访问shell。。。无论如何,感谢@hakre为您提供的时间。

您给出的
php-r
示例与您给出的示例输出不一致。很可能两者完全无关,这与PHP CLI执行exec命令无关。还要再次检查您是否没有任何自动前置脚本或类似脚本。另外,众所周知,WAMP使用PHP CLI二进制文件执行akward操作,因此,请仔细检查您实际执行的二进制文件,这对于所使用的ini配置也很重要。是的,我刚刚注意到我粘贴了错误的输出,并相应地编辑了我的问题。这是一个假编辑还是cmd的真实输出?而
php-nr“var_dump(exec('echo lol',$output,$exit),$output,$exit);”
给出了什么?这是真实的东西,除了我用♀" 这是我在控制台中看到的。如果我将命令的输出重定向到文本文件中,则会出现真正的字符。/Edit:与php-nR的结果相同。另外,请将
php-v
php--ini
的输出添加到您的问题中。