Symfony进程组件指向错误的PHP版本
我正在尝试使用Symfony进程组件运行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
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);
}
});
}