2017-10-30 13 views
1

Laravel 5.5PHP > 7.0しかサポートしていないので、5.6.xとの互換性を保つためにはどうすればよいですか?私は5.6環境にあります。PHPのアップグレードはオプションではありません。composer updateは、開発環境のいつでも実行された場合、何も中断しないようにしたいと思います。laravelがphp5.6.xと互換性があることを確認する

記事を見ると、ダウングレードは容易ではないので、どうにかして何かが壊れないようにしたいと思っています。ここでは作曲エントリー/依存関係のリストがあります

laravel5.4.*ので

{ 
    "require": { 
     "php": ">=5.6.4", 
     "laravel/framework": "5.4.*", 
     "laravel/tinker": "~1.0", 
     "laravelcollective/html": "^5.4.0" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "mockery/mockery": "0.9.*", 
     "phpunit/phpunit": "~5.7" 
    }, 
} 

として指定され、この平均値は、私はもはやcomposer updateを実行することはできませんでしょうか?または、他のパッケージを更新することはまだ安全ですか?上記のものとlaravel5.4.36のままでしょうか?

私はコンポーザーの仕様が5.4.xの範囲にとどまることをパッケージに伝えていることを認識しています。確かにしたいだけですが、依存関係が下位互換性を維持する上で安全でないかもしれないと心配していますか?今のところcomposer updateを忘れてしまったのか、もっと慎重にcomposer.jsonを調整する必要があるのか​​不思議です。

私の次のプロジェクトは、私がスピンアップするとPHP 5.6である必要があります。ここではカスタマイズされたラーベルベースからクローンを作成しています。これはいつも"laravel/framework": "5.4.*",になります。これはそのように設定されていますか?私はinitのかもしれません

"require": { 
    "php": ">=5.6.4", 
    "laravel/framework": "5.4.*", 
    "laravel/tinker": "1.0.*", 
    "laravelcollective/html": "5.4.*" 
}, 
"require-dev": { 
    "fzaninotto/faker": "1.7.*", 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "5.7.*" 
}, 

更新

@Ericブラウンの答え、およびpackagist上のいくつかの研究を受けて、これは私がメインの依存関係(+ laravelcollective/html)を調整したものです次にLaravel/vendorファイルのコピーを入れた新しいgit repoを作成し、これを新しいディレクトリに配置します。これはサブモジュールを混乱させたくないので、代わりにtarballになる可能性があります元とコミットしました。

+0

PHP 5.6は[もはや積極的にサポートされておらず、さらに1年だけセキュリティアップデートを受け取ります](http://php.net/supported-versions.php)。その点を過ぎると、それを実行し続けることは危険で無責任なものになります。 **今すぐ**は、PHP 7への移行を計画するときです。 – ceejayoz

+0

良い点!それは企業の責任です。私はこの面を支配していないので、私ができることは、現在のインフラストラクチャで長期的に安定したものを与えることです。その後、アップグレードすることを決定すると、composer.jsonを調整するのは簡単になります。病気はreadmeまたはそのような場所で大胆にあなたのコメントをメモしてください! – blamb

+0

'composer.lock'ファイルがソース管理に含まれていることを確認してください。生成された時点でインストールされているすべてのバージョンの正確な**バージョンが含まれています。インストールされた正確なバージョンを得るために 'composer install'を実行できます。 'composer update'は' .lock'ファイルを新しいパッケージで更新するので、ソース管理で古い '.lock'ファイルをチェックアウトし、それらの正確なバージョンに再度ダウングレードすることができます。 – ceejayoz

答えて

1

デフォルトでは、あなたのcomposer.jsonファイルの中で、"laravel/framework": "5.4.*"はLaravelが常にバージョン5.4.some_version_numberでなければならないと指定しているため、LaravelはそのようなLaravelの新しいバージョンにアップグレードしません。下位互換性についてはあまり心配する必要はありませんが、潜在的なバグや脆弱性に関するアップデートを受け取る場合は、4.3.1ではなく4.3。*のように最後の数字の代わりに*を追加してください。

また、GithubやBitbucketなどのGitリポジトリの使い方を学び、現在のバージョンをそこに格納することは非常に有益です。これらは、バージョン管理には最適であり、開発やアップデートで何もひどくうまくいかないことを保証します。これは個人的に私が数え切れないほど多くの時間を節約しました。

+0

私はフレームワーク自体の "現在のバージョン"を保存することをお勧めしますか? 「Vendor」フォルダ、例えば。それを.gitignoreから削除するか、あるいは 'Laravel'フォルダ全体を個別のリポジトリから削除し、バックアップとして保存しますか?そして、私はアステリックスを 'tinker'、' collective'と 'faker'に追加することをお勧めしますか? – blamb

+0

主に、あなたのインスタンスでは、アップデートでPHP7しか使用されない場合にアップグレードが間違ってしまう可能性があります。アップデートが間違っていれば、それは単なる安全レイヤーです。 –

関連する問題