古い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パッケージを更新したくない場合は、composer.lock
ファイルを手動で変更し、実際のPHPバージョンをJSONオブジェクトのplatform > php
に書き込むことで、この問題を解決できます。
例
...
"platform": {
"php": "7.1"
}
...
動作しますが、これを行うための最も推奨される方法は、composer.lock
ファイルを削除し、platform > php
のcomposer.json
バージョンを変更してからcomposer install
を実行することです。
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が他の必要なパッケージの要件を満たしているかどうかは、そうではありません。ユーザーはcomposerをphp-cliで管理しています。これは本質的に互換性があることを意味します。 Composerは、Webサーバーと他のパッケージで実行されているphpのバージョンに互換性があることを確認しています。
さて、理由については、私がリストした方法と他の投稿が示唆している方法の両方が、可能性の高い解決策です。 Composerシステム、PHP、およびインストールされているパッケージに関する情報は、1。継続性.. 2.バージョン履歴です。composer外部の変更が発生したときにキャッシュファイルを所有する場合、どのパッケージバージョンが相互に互換性があるか、いつ作成するかを知ることは困難です。
したがって、composer=は、更新またはインストールの実行時にphpバージョンをチェックせず、そのキャッシュを参照します。Apacheは、ユーザーによって無効にされているphpバージョンへの参照を取得します。作曲家のキャッシュファイルの参照です。そのため、キャッシュを削除することをお勧めします。
composer --self-update
composerは、管理するパッケージとは対照的に、自分自身を更新するように指示します...
composer update
その時点で、phpが最初にyum/aptを使用してインストールされ、その後簡単なApacheによってアップグレードされた場合、--ignore-platform-reqsフラグは、存在する可能性のあるrpm除外機能を回避し、 composerパッケージ。
HostGator共有ホスティングでは、使用したいphpバージョンの.bashrcファイルにエイリアスを作成することで、この問題を克服できました。
alias php='/opt/php71/bin/php'
alias composer="/opt/php71/bin/php ~/bin/composer/composer.phar"
.bashrcファイルを編集した後、ソースを忘れないでください: 'source〜/ .bashrc'
将来誰かを助ける場合、PHPStorm(2017.2)内からcomposer updateを実行しようとしたときにこの問題に遭遇しました。上記の提案を試しましたが、どれも機能しませんでした。 PHPインストール済み(5.6、7.0、7.1)のバージョンはすべてPHPStorm設定の下に追加されているため、プロジェクトの要件に基づいて切り替えることができます。選択したCLIインタープリター設定に関係なく、常にPHP 7.0でcomposerを呼び出します。PHPStormの外部のターミナルでcomposerを実行すると問題なく動作します(設定されたパス7.1を参照)。私の場合、これはPHPStormのように感じます。バグ。
これはconfig/envの問題です。理想的には、テストする複数のphpバージョンを使用できます。Apacheでは、次のようなバージョンを交換できます。
Example:
Sudo a2dismod php5.6
Sudo a2enmod php7.0
Sudo service Apache2 restart
ここで起こっているのは、彼がphp -vを実行しているとき、php7で実行するように構成されているphp-cliを実行しているが、Apacheで5.5が有効になっている可能性があります。そう
Sudo a2dismod php5.5
Sudo a2enmod php7.0
Sudo service Apache2 restart