首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony流程组件指向错误的PHP版本

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

Stack Overflow用户
提问于 2017-02-12 00:34:48
回答 2查看 607关注 0票数 3

我试图使用这样的Symfony流程组件运行composer install

代码语言:javascript
复制
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流程组件正在写入日志文件:

代码语言:javascript
复制
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安装的。

如果有人需要更多的信息,我更愿意尝试一些事情。让我知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-16 14:27:57

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

如果您想阅读这方面的内容,您可以查看下面的讨论:

https://github.com/symfony/symfony/issues/21591

票数 1
EN

Stack Overflow用户

发布于 2017-02-12 00:58:17

不确定为什么会发生这种情况,但是您可以跳过 option编写器中的平台必要条件。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42182923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档