我只是想知道作曲家在检查需求时如何检查使用哪个php。我使用MacOS和终端类型:
composer require phpunit/phpunit
的结果类似于:
Problem 1
- phpunit/phpunit 5.0.4 requires php >=5.6 -> your PHP version (5.5.27) or "config.platform.php" value does not satisfy that requirement....
当我检查php版本时:
php -v
结果是:
PHP 5.6.10 (cli) (build: Jun 12 2015 14:08:56) Copyright (c) 1997-2015PHP Group Zend Engine v2.6.0,版权所有(c) 1998-2015 Zend技术Xdebug v2.2.5,版权所有(c) 2002-2014, by Derick Rethans
:
which php
php: alias to/Applications/MAMP/bin/php/php5.6.10/bin/php
有人能解释一下吗?提前感谢!
如果您指定调试详细信息-vvv
,则Composer可以告诉您它正在运行的PHP版本。
我喜欢用about
命令运行它,因为输出相对较短。
composer -vvv about
示例输出:
…在达尔文/18.6.0上运行1.8.5(2019-04-09 17:46:47)和PHP 7.3.5…
编辑:这比我预期的更吸引人,所以这里有一个输出更清晰的版本:
composer -vvv about 2>&1 | grep "PHP"
在MacOs X上php的默认安装位于/usr/bin。如果您升级php,它很可能安装在其他地方(如/usr/local/php5),或者如果您使用MAMP或其他东西,它将安装在其他地方。只要确保在遍历PATH时第一次出现的php与您的web服务器使用的版本相同。(就像在路径中/usr/bin之前有/usr/local/php5/bin)。这样你的问题就解决了。
如果您使用包安装方法,例如Ubuntu上的apt-get,则可执行文件可能包含指向应该用于运行特定编写器文件的特定php的"shebang"。
当使用命令composer
时,cli将首先解析使用哪个二进制文件。通过运行which composer
,您可以找到二进制文件。
$ which composer
/usr/bin/composer
一旦你知道了这一点,你就可以打开文件,例如使用vim: vim /usr/bin/composer
(通常需要超级用户访问才能修改二进制文件,所以你不应该把composer搞得一团糟)。
在编译器二进制文件的第一行应该是一个shebang,可能看起来像#!/usr/bin/php
,指示编译器可执行文件应该如何运行。
你可以直接调用php二进制文件来验证它的版本:
/usr/bin/php -v
(在这里分享这个,因为我正在寻找它,降落在这里,但没有什么让我满意,所以我将分享给那些出于同样原因降落在这里的人:)
使用以下命令,您可以检查哪些编写器包依赖于特定的php版本:
composer depends php | grep 8.1
将输出如下内容:
symfony/console v6.1.4 requires php (>=8.1)
symfony/css-selector v6.1.3 requires php (>=8.1)
symfony/deprecation-contracts v3.1.1 requires php (>=8.1)
symfony/error-handler v6.1.3 requires php (>=8.1)
symfony/event-dispatcher v6.1.0 requires php (>=8.1)
symfony/event-dispatcher-contracts v3.1.1 requires php (>=8.1)
symfony/finder v6.1.3 requires php (>=8.1)
symfony/http-foundation v6.1.4 requires php (>=8.1)
symfony/http-kernel v6.1.4 requires php (>=8.1)
symfony/mailer v6.1.4 requires php (>=8.1)
symfony/mime v6.1.4 requires php (>=8.1)
symfony/process v6.1.3 requires php (>=8.1)
symfony/routing v6.1.3 requires php (>=8.1)
symfony/service-contracts v3.1.1 requires php (>=8.1)
symfony/string v6.1.4 requires php (>=8.1)
symfony/translation v6.1.4 requires php (>=8.1)
symfony/translation-contracts v3.1.1 requires php (>=8.1)
symfony/var-dumper v6.1.3 requires php (>=8.1)