我正在尝试使用Symfony流程组件运行composer install
,如下所示:
if ($process->isSuccessful()) {
$process = new Process("cd {$directory} && composer install");
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
Log::info($buffer);
} else {
Log::info($buffer);
}
});
}
它指向一个5.6.25的PHP版本,看起来很奇怪,因为我100%肯定我使用的是PHP 7.在Laravel中运行一个phpinfo()给了我:
PHP版本7.0.13
从我的终端运行php -v
会给我:
PHP 7.0.13(cli)(建于2016年11月15日23:52:36)(NTS)版权所有(c) 1997-2016 PHP Group Zend Engine v3.0.0,版权所有(c)1998-2016 Zend Technologies
这是我从我的日志文件中拖出的输出,Symfony进程组件正在写入:
Problem 1
- Installation request for phpunit/php-code-coverage 5.0.0 -> satisfiable by phpunit/php-code-coverage[5.0.0].
- phpunit/php-code-coverage 5.0.0 requires php ^7.0 -> your PHP version (5.6.25) does not satisfy that requirement.
Problem 2
- Installation request for phpunit/phpunit 6.0.6 -> satisfiable by phpunit/phpunit[6.0.6].
- phpunit/phpunit 6.0.6 requires php ^7.0 -> your PHP version (5.6.25) does not satisfy that requirement.
Problem 3
- Installation request for phpunit/phpunit-mock-objects 4.0.0 -> satisfiable by phpunit/phpunit-mock-objects[4.0.0].
- phpunit/phpunit-mock-objects 4.0.0 requires php ^7.0 -> your PHP version (5.6.25) does not satisfy that requirement.
有人知道它为什么指向我不使用的PHP版本吗?我顺便在macOS上运行它。
最奇怪的是,即使我在Symfony进程中使用php -v
,它也显示正确的版本,因此似乎作曲家链接到错误的PHP版本?我可以通过我自己的终端通过编辑器在本地安装它。
如果有人需要更多信息,我非常愿意尝试一些事情。让我知道。
答案 0 :(得分:1)
不确定为什么会发生这种情况,但您可以使用--ignore-platform-reqs
option跳过作曲家中的平台必备条件。
if ($process->isSuccessful()) {
$process = new Process("cd {$directory} && composer install --ignore-platform-reqs");
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
Log::info($buffer);
} else {
Log::info($buffer);
}
});
}
答案 1 :(得分:0)
这是因为执行symfony进程组件的用户与普通用户不同,导致完全不同的$PATH
没有我设置的常用全局变量。
如果您想阅读此内容,可以查看以下讨论: