PHP のバージョンを X と Y の間で要求するよう composer に強制する
質問
サーバー (最大 5.3.5) と開発マシン (最大 5.5.9) で異なる PHP バージョンが混在して動作しています。
ここで、いくつかの外部バンドルの最新版を取得するために "composer update" を行ったところ、問題に遭遇しました。 composer.json は次のようなものです。
"require": {
"php": ">=5.3.3",
.....
},
PHP 5.5を必要とするBundleをいくつか入手しました。私たちの開発マシン上では問題ありませんが、サーバー上では :(
composer に PHP のバージョンを 5.3.3 から 5.3.5 の間で要求するように指示することは可能ですか?または、利用可能な最大バージョンを指定することはできますか?
試してみたところ
"require": {
"php": ">=5.3.3, <=5.3.5",
.....
},
と
"require": {
"php": "<=5.3.5",
.....
},
を実行しましたが、両方ともうまくいきませんでした。要求されたパッケージphpはどのバージョンでも見つかりませんでした。パッケージ名にタイプミスがあるかもしれません。
何かアイデアはありますか?前もってありがとうございます。
どのように解決するのですか?
利用可能な最新の PHP で開発し、非常に古いバージョンで本番稼動させていることは、控えめに言っても疑わしいと思います。セキュリティ パッチを見逃してしまうだけでなく、より重要なこととして、バージョン 5.3.9 および 5.3.23 で導入された PHP のバグ修正により、いくつかの詳細で PHP の動作がかなり根本的に変更されているため、ここから多くの問題が発生する可能性があります。5.4 や 5.5 の機能を誤って使用してしまう危険性について話しているわけではありません。
そして、Composer にこの状況に対処させる方法は本当にありません。を実行するときに使用される PHP のバージョンは
composer update
を実行するときに使用される PHP のバージョンが依存関係の解決を決定し、 PHP のバージョンとインストールされている PHP 拡張に影響されます。
更新に使用している PHP がこのバージョン要件に一致しない場合、パッケージを 5.3.3 から 5.3.5 までの PHP バージョンにのみ使用するように定義することはできません。使用されている PHP のバージョンが上限バージョンの制約を超えているため、そのようなパッケージはバージョン要件を満たす資格がなく、Composer はパッケージが見つからなかったと報告します (パッケージを見たことを伝えるのではなく、バージョン制約のために無視しなければならなかったのです)。
おそらく、3 つの明白な方法があります。
-
開発環境を、実際に使用している製品版にダウングレードする。複数使用されている場合。最も古いものを使用します。そうすることで、PHPのバージョンに関するあらゆる要件が一致するようになります。実行
composer update
を実行し、完了です。 -
本番環境をアップグレードする。これ以上説明する必要はありませんが、PHP 5.5 は 5.3 よりも本当に速いので、多くの非常に素晴らしい PHP 機能を失うだけでなく、かなりのパフォーマンス向上も失うことになることを述べておかなければなりません。
-
グローバルまたはプロジェクトの composer.json に "platform.php" 設定を追加します。これにより、Composer 自体が動作している PHP のバージョンを上書きし、代わりにその異なる PHP バージョンで依存関係を計算するように Composer に指示します。
composer config -g platform.php 5.3.5
を指定するとグローバルな設定になり、それ以降の Composer の実行に影響します。-g
はローカル設定 (そのプロジェクトでの Composer の操作にのみ影響します。異なるバージョンの PHP を使って複数のプロジェクトで開発を行っている場合)。
関連
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのstartWith()関数とendsWith()関数
-
[解決済み] require, include, require_once, include_onceの違い?
-
[解決済み] Composerを使用して特定のバージョンのパッケージをインストールする方法は?
-
[解決済み】Composerのrequireがメモリ不足になる。PHP Fatal error: 許容メモリサイズ1610612736バイトを使い果たしました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法