gpt4 book ai didi

php - Laravel Composer 看到错误的 PHP 版本

转载 作者:可可西里 更新时间:2023-11-01 12:30:40 25 4
gpt4 key购买 nike

我正在尝试安装一个旧的 Laravel 项目。

当我运行 composer install 时出现以下错误

This package requires php >=5.6.4 but your PHP version (5.5.35) does not satisfy that requirement.

当我运行时

php -v

我得到以下结果

PHP 7.1.10 (cli) (built: Oct 12 2017 14:00:12) ( ZTS )

这是我的 composer.json 的内容

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"doctrine/dbal": "^2.6",
"guzzlehttp/guzzle": "^6.3",
"intervention/image": "^2.4",
"intervention/imagecache": "^2.3",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.4",
"maatwebsite/excel": "^2.1",
"sentry/sentry-laravel": "^0.8.0",
"spatie/laravel-glide": "^3.2",
"spatie/laravel-permission": "^2.6",
"spatie/laravel-pjax": "^1.3"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.7"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
}

这个项目怎么可能认为我正在运行 php 5.6?

谢谢。

最佳答案

composer clear-cache
composer self-update
composer update --ignore-platform-reqs
or
composer install --ignore-platform-reqs

其他信息和对@nicohase 的回复,Nico,当您声明composer 没有使用与apache 相同的php 可执行文件时,您是正确的。为什么 composer 会确保 php-cli 满足其他所需包的要求?它不会也不会。用户使用 php-cli 管理 Composer ,这本质上意味着它们是兼容的。 Composer 正在检查以确保在网络服务器上运行的 php 版本与其他包兼容。

现在,至于为什么,我列出的方法和另一篇文章建议的方法都是可能的解决方案。 Composer 缓存有关系统、php 和已安装包的信息,原因有两个:1. 连续性.. 2. 版本历史。如果 composer 在发生外部更改时修改了自己的缓存文件,则很难知道哪些包版本相互兼容,以及何时兼容。

因此,当更新或安装发生时,composer 不会检查 php 版本,它会引用其缓存。 Apache 可能会 greps 任何对用户禁用的 php 版本的引用,它会在 composer 的缓存文件中找到引用。我的建议是出于这个原因删除缓存。此外,

composer --self-update

告诉 Composer 更新自己,而不是它管理的包......

composer update

此时如果 php 最初是通过 yum/apt 安装的,然后通过 easy apache 升级,--ignore-platform-reqs 标志将绕过任何可能仍然存在的 rpm 排除功能,并允许安装或更新 Composer 包。

关于php - Laravel Composer 看到错误的 PHP 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46785969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com