我正在尝试安装旧的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?
谢谢。
答案 0 :(得分:8)
我也遇到过这个问题。如果您不想更新所有编写器包,可以通过手动更改composer.lock
文件并在platform > php
中将实际PHP版本写入JSON对象来解决此问题。
示例强>
...
"platform": {
"php": "7.1"
}
...
虽然可行,但最常推荐的方法是删除composer.lock
文件,更改platform > php
中的composer.json
版本,然后执行composer install
。
答案 1 :(得分:5)
composer clear-cache
composer self-update
composer update --ignore-platform-reqs
or
composer install --ignore-platform-reqs
其他信息和对@ nicohase,Nico的响应,当您声明作曲家没有使用与apache相同的php可执行文件时,您是正确的。为什么作曲家会确保php-cli满足其他必需软件包的要求?它不会也不会。用户正在使用php-cli管理作曲家,这从本质上意味着它们兼容。 Composer正在检查以确保Web服务器上运行的php版本与其他软件包兼容。
现在,关于原因,我列出的方法和另一篇文章都暗示,这两种方法都可能是解决方案。 Composer缓存有关系统,php和已安装软件包的信息,其原因有两个:1.连续性。2.版本历史。如果作曲家在发生外部更改时修改了自己的缓存文件,将很难知道哪些软件包版本彼此兼容以及何时兼容。
因此,在进行更新或安装时,作曲家不会检查php版本,它会引用其缓存。 Apache可能会对用户禁用的php版本的任何引用进行收集,它将在作曲家的缓存文件中找到一个引用。我的建议建议出于这个原因删除缓存。此外,
composer --self-update
告诉作曲家自我更新,而不是自己管理的软件包...
composer update
在那时,如果最初是通过yum / apt安装了php,然后通过简单的Apache进行了升级,则--ignore-platform-reqs标志将绕过可能仍然存在的所有rpm排除功能,并允许安装或更新作曲家软件包。
答案 2 :(得分:0)
这是一个config / env问题。理想情况下,你可以有多个php版本进行测试,在apache中你可以交换这样的版本:
Example:
sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
这里发生的事情是当他运行php -v他正在运行php-cli,配置为在php7中运行,但也许他的apache启用了5.5。 所以
sudo a2dismod php5.5
sudo a2enmod php7.0
sudo service apache2 restart
答案 3 :(得分:0)
如果将来帮助某人,我在尝试从PHPStorm(2017.2)内部运行作曲家更新时遇到了这个问题。我尝试了上述建议,但没有一个有效。我在PHPStorm设置下添加了多个版本的PHP(5.6,7.0,7.1),因此我可以根据项目要求进行切换。无论选择哪种CLI解释器设置,它在调用composer时总是会看到PHP 7.0。在PHPStorm外部的终端中运行composer工作没有问题(引用路径配置版本,7.1)。就我而言,这感觉就像一个PHPStorm错误。
答案 4 :(得分:0)
在我的HostGator共享主机上,我可以通过在.bashrc文件中为要使用的php版本创建别名来解决此问题:
alias php='/opt/php71/bin/php'
alias composer="/opt/php71/bin/php ~/bin/composer/composer.phar"
在编辑.bashrc文件后,请记住源代码:'source〜/ .bashrc'
答案 5 :(得分:0)
我刚刚在 VS Code 中运行 composer update
时遇到了这个问题。
问题是 VS Code 的集成终端以为我使用的是 PHP 7.1,而我的 MacOS 系统也有 PHP 8.0。
我尝试从我的另一个终端 composer update
运行 Hyper Terminal
并且成功了。
当我输入时:
$ /usr/bin/php -v
在 VS Code 的终端中,它显示 7.1。
当我输入时:
$ which php
/usr/local/bin/php
$ /usr/local/bin/php -v
显示 PHP 8。
解决方案
是从 HyperTerm 而不是 VS Code 运行 composer update
。
这条评论很有帮助:
<块引用>如果有人到达这里,我的问题是(在 mac 上)我在终端应用程序和 PhpStorm 上切换到 zsh shell,但系统默认值仍设置为 bash。 PhpStorm 的 composer 插件使用系统默认 shell 而不是 Preferences 中定义的 shell,后者在 PATH 上有一个旧的 PHP 版本。 – 米萨尔法蒂
答案 6 :(得分:0)
phpinfo() 为您提供 apache 的版本,这是项目运行的实际版本,如果您想更改它,只需按照以下步骤操作:
安装你想安装的php版本:
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
//replace X with the version you want
sudo apt-get install php7.X-fpm php7.X-curl php7.X-mbstring php7.X-mysql -y
现在重启你的apache:
sudo service apache2 restart
禁用当前的 php 版本(phpinfo() 给你的那个):
sudo a2dismod php7.2
现在启用您刚刚安装的 php 版本:
sudo a2enmod php7.X