📌  相关文章
📜  phpunit phpunit[6.0.0, ..., 6.5.14] 需要 php ^7.0 -> 您的 php 版本 (8.0.0) 不满足该要求. - PHP (1)

📅  最后修改于: 2023-12-03 15:18:33.321000             🧑  作者: Mango

介绍

当您尝试在当前安装的PHP v8.0.0上运行版本号为6.0.0到6.5.14的PHPUnit时,您可能会遇到此错误:“phpunit[6.0.0, ..., 6.5.14]需要php ^ 7.0->您的php版本(8.0.0)不满足该要求”

这是因为PHPUnit 6.x仅兼容PHP的较旧版本,而php v8.0.0已超出了PHPUnit 6.x的可访问范围,因此不能使用这个版本的PHPUnit运行在PHP 8.0.0上。

在这种情况下,我们需要考虑升级PHPUnit版本,以此来解决问题。在下面的段落中,我们将提供相关示例和建议,以解决phpunit[6.0.0, ..., 6.5.14]需要php ^ 7.0这个问题。

解决方案

解决这个问题,我们需要遵循下面的步骤:

  1. 升级PHPUnit版本
  2. 检查当前的PHPUnit系统要求
  3. 确认php.ini文件的确安装正确版本
  4. 确认全局PHP变量

以下是具体说明:

  1. 升级PHPUnit版本

在终端中使用composer update 命令,升级PHPUnit的版本至7.x或更新版本。例如,可以使用下面的命令:

composer update phpunit/phpunit

当然,以上命令会同时升级其他也包含在composer.json文件中的软件包。

  1. 检查当前PHPUnit的系统要求

安装了新版本的PHPUnit之后,还需要检查它的系统要求是否与当前PHP环境相兼容。可以通过终端命令“php vendor/bin/phpunit --requirements”进行检查,结果类似如下:

PHPUnit 9.5.5 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.0 with Xdebug 3.0.2
OPcache:       n/a
Reflection:    8.0.0
...

Configuration: /path/to/project/phpunit.xml.dist

...............                                          15 / 15 (100%)

OK (15 tests, 20 assertions)

在这个例子中,PHPUnit 9.5.5可以正常在PHP v8.0.0环境中使用,并且已经过了 PHPUnit --requirements 的系统要求测试。

  1. 确认php.ini文件的确安装正确版本

在php.ini文件中会定义PHP运行环境的配置,比如PHP的版本,插件等。需要通过确认文件的位置,并确认其中的PHP版本是否被正确设置以保证PHPUnit与PHP之间的兼容性。 可以在终端中通过"php --ini"命令来查找php.ini文件位置:

php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/8.0
Loaded Configuration File:         /usr/local/etc/php/8.0/php.ini
Scan for additional .ini files in: /usr/local/etc/php/8.0/conf.d
Additional .ini files parsed:      (none)

在这个例子中,可以看到当前系统PHP环境的php.ini文件在 "/usr/local/etc/php/8.0/php.ini" 路径,可以打开这个文件来查看其中的PHP版本和其他配置。

  1. 确认全局PHP变量

如果使用了任何自定义的全局PHP变量,则需要确认它们是否与PHPUnit和当前版本的PHP进行了兼容。 可以使用'php --ri extension_name'的终端命令来查找扩展模块的版本。

例如,使用以下命令可以检查PHP的sqlite3扩展是否兼容PHPUnit:

php -r 'echo PHP_VERSION . "\n";' && php -r 'echo SQLite3::version()["versionString"], "\n";' && php -r 'echo \'' . PHPUnit\Runner\Version::id() . '\', "\n";'

在这个例子中,可以看到,当前PHP版本是8.0.0,并且SQLite3的版本兼容 PHPUnit:

8.0.0
3.34.1
7.5.20

结论

phpunit[6.0.0, ..., 6.5.14]需要php ^ 7.0在使用PHPUnit时是一个常见的问题。我们可以通过升级PHPUnit版本、确认当前PHPUnit的系统要求、确认php.ini文件的版本以及确认全局PHP变量来解决这个问题。希望这篇文章可以帮助到大家。