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



没有任何明显的原因,我无法再更新我的作曲家管理的依赖项。经过一番调查,事实证明 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(表单馈送)字符 (0x0C)。

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

  • 由于随机表单馈送字符 (0x0c),作曲家不会更新依赖项 - 作曲家问题 #1374

但是似乎我的问题与本主题中的问题不同,因为在其中,可怕的字符以shell_exec而不是exec出现。就我而言,它确实与exec一起出现。

对此有什么想法吗?我想知道我应该在这里还是在超级用户上发帖,如果它不属于这里,请随时移动这个问题。

编辑:顺便说一句,我在Windows 7 64位上使用Wamp,使用带有PHP 5.4.12的Wamp:)

编辑 2php-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:wampbinphpphp5.4.12php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

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

更仔细地重新阅读了我链接到(https://github.com/composer/composer/issues/1373)的Composer's GitHub上的问题。在其中,遇到问题的人说他通过在 shell 中执行的.bat文件中删除对 cls 的调用来修复它,首先在 Windows 的注册表中调用它 (HKCUSoftwareMicrosoftCommand ProcessorAutoRun )。

我实际上有一个关于不相关问题的.bat文件,其中包含对cls的调用。所以我的 Windows 和 PHP 很好 - 我只是设置了一些导致麻烦的东西,直到现在我才意识到。

仍然很高兴知道这种类型的东西可能会弄乱访问 shell 的 PHP......无论如何,@hakre感谢您的时间。

相关内容

  • 没有找到相关文章

最新更新