PHP中的额外字符';Windows 7 CLI上的s exec()输出
没有任何明显的原因,我无法再更新我的Composer管理的依赖项。经过一些调查,结果表明PHP在使用其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) 我
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
的输出添加到您的问题中。