我试图使用这样的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);
}
});
}它指向PHP版本5.6.25,这看起来非常奇怪,因为我100%肯定我使用的是PHP 7。
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
这是我从我的日志文件中跟踪的输出,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,它也显示了正确的版本,所以看起来composer链接到了错误的PHP版本?我只需要通过我自己的终端,就可以在本地安装它,尽管是用composer安装的。
如果有人需要更多的信息,我更愿意尝试一些事情。让我知道。
发布于 2017-02-16 14:27:57
这是因为执行symfony流程组件的用户与我的普通用户不同,这导致了一个完全不同的$PATH,它没有我设置的通常的全局值。
如果您想阅读这方面的内容,您可以查看下面的讨论:
发布于 2017-02-12 00:58:17
不确定为什么会发生这种情况,但是您可以跳过 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);
}
});
}https://stackoverflow.com/questions/42182923
复制相似问题