Composer 在指定平台 php 版本后不工作
Composer not working after specifying platform php version
我正在为 WebApp 开发一个项目,我想为我的 class 属性指定类型。我没有意识到这是 PHP 版本 7.4.* 的功能,所以我阅读了 this 并更新了我的 composer.json
以包含相关的 material:
{
"name": "srmes/shopping-app-test",
"description": "an assignment from `scandiweb.com`. A simple php-based web application to display and inventory a range of products",
"require-dev": {
"phpunit/phpunit":"~9.0",
"squizlabs/php_codesniffer": "~3.0"
},
"require": {
"doctrine/orm": "~2.7",
"php": "7.4.4"
},
"config": {
"platform": {
"php": "7.4.4"
}
},
"autoload" : {
"psr-4": {
"WebApp\": "src/"
}
},
"autoload-dev" : {
"psr-4": {
"WebApp\Tests\" : "tests/"
}
}
}
然后我运行composer install
和composer update
.
安装似乎没有出现问题,只是现在我的 php 单元测试没有 运行:
PHPUnit 9.1.1 by Sebastian Bergmann and contributors.
Time: 58 ms, Memory: 4.00 MB
No tests executed!
并且所有 composer
命令都会出现以下错误:
Parse error: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /Users/ScottAnderson/Documents/Tech/commissions/shopping_app_test/vendor/ocramius/package-versions/src/PackageVersions/Installer.php on line 33
具有讽刺意味的是,这是我尝试使用的 php 功能的语法异常!我什至无法 运行 composer -vvv
调试作曲家正在使用哪个 php 可执行文件。
为了解决这个问题,我应该使用像 phpbrew 这样的包来制作 php 的目录环境吗?
我的假设是,在 composer.json
中要求 php 7.4.4 之后,作曲家和 phpunit[= 将安装和使用正确的 php 可执行文件22=]
看起来你不是 运行 php 7.4。并且安装的依赖项(此处 phpunit 和 PackageVersion)需要它。
有时 composer 会运行与事件挂钩的命令,如果命令失败,其他所有内容都会失败。
- 删除供应商文件夹。
- 删除composer.lock
- 在 composer.json
中删除对 php 7.4 版本的限制
- 运行作曲家更新
你应该没事
顺便说一句,composer 管理项目依赖项,而不是 php 安装的版本。
如果您从 PHP 开始,我建议您坚持使用广泛可用的 7.3。老实说,您不需要为该语言添加最新的语法。
我正在为 WebApp 开发一个项目,我想为我的 class 属性指定类型。我没有意识到这是 PHP 版本 7.4.* 的功能,所以我阅读了 this 并更新了我的 composer.json
以包含相关的 material:
{
"name": "srmes/shopping-app-test",
"description": "an assignment from `scandiweb.com`. A simple php-based web application to display and inventory a range of products",
"require-dev": {
"phpunit/phpunit":"~9.0",
"squizlabs/php_codesniffer": "~3.0"
},
"require": {
"doctrine/orm": "~2.7",
"php": "7.4.4"
},
"config": {
"platform": {
"php": "7.4.4"
}
},
"autoload" : {
"psr-4": {
"WebApp\": "src/"
}
},
"autoload-dev" : {
"psr-4": {
"WebApp\Tests\" : "tests/"
}
}
}
然后我运行composer install
和composer update
.
安装似乎没有出现问题,只是现在我的 php 单元测试没有 运行:
PHPUnit 9.1.1 by Sebastian Bergmann and contributors.
Time: 58 ms, Memory: 4.00 MB
No tests executed!
并且所有 composer
命令都会出现以下错误:
Parse error: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /Users/ScottAnderson/Documents/Tech/commissions/shopping_app_test/vendor/ocramius/package-versions/src/PackageVersions/Installer.php on line 33
具有讽刺意味的是,这是我尝试使用的 php 功能的语法异常!我什至无法 运行 composer -vvv
调试作曲家正在使用哪个 php 可执行文件。
为了解决这个问题,我应该使用像 phpbrew 这样的包来制作 php 的目录环境吗?
我的假设是,在 composer.json
中要求 php 7.4.4 之后,作曲家和 phpunit[= 将安装和使用正确的 php 可执行文件22=]
看起来你不是 运行 php 7.4。并且安装的依赖项(此处 phpunit 和 PackageVersion)需要它。 有时 composer 会运行与事件挂钩的命令,如果命令失败,其他所有内容都会失败。
- 删除供应商文件夹。
- 删除composer.lock
- 在 composer.json 中删除对 php 7.4 版本的限制
- 运行作曲家更新 你应该没事
顺便说一句,composer 管理项目依赖项,而不是 php 安装的版本。 如果您从 PHP 开始,我建议您坚持使用广泛可用的 7.3。老实说,您不需要为该语言添加最新的语法。