没有任何明显的原因,我无法再更新我的作曲家管理的依赖项。经过一番调查,事实证明 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:)
编辑 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: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感谢您的时间。