Symfony进程组件指向错误的PHP版本

Symfony进程组件指向错误的PHP版本,php,symfony,process,Php,Symfony,Process,我正在尝试使用Symfony进程组件运行composer安装,如下所示: if ($process->isSuccessful()) { $process = new Process("cd {$directory} && composer install"); $process->run(function ($type, $buffer) { if (Process::ERR === $type) { Log

我正在尝试使用Symfony进程组件运行
composer安装
,如下所示:

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%确定我使用的是PHP7。在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技术公司

这是我从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


如果有人需要更多的信息,我非常愿意尝试一些东西。让我知道。

不知道为什么会发生这种情况,但您可以使用跳过composer中的平台必备项


这是因为执行symfony进程组件的用户与我的普通用户不同,这导致了一个完全不同的
$PATH
,它没有我设置的常用全局变量

如果您想了解这一点,可以查看以下讨论:


这一方法非常有效,但我仍然对潜在问题非常谨慎。谢谢你的回复,但如果可能的话,我希望有人能和我一起解决这个问题:)你的机器上安装了不止一个版本的php吗?请尝试
确认哪个php
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);
        }
    });
}