ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:
このガイドは参考として役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
Composer は、PHP用の優れた依存関係管理ツールです。 プロジェクトのニーズを宣言したライブラリを追跡し、それらをフェッチしてインストールします。 デフォルトではグローバルに使用されていないため、それ自体はパッケージマネージャーではなく、個々のプロジェクトで使用されている可能性があります。
それは何のために使われますか? いくつかのライブラリに依存し、さらに他のライブラリに依存する可能性のあるアプリケーションプロジェクトがあるとします。 小さな.jsonファイルでこれらの依存関係を宣言すると、Composerはそれらのライブラリを追跡してインストールします。
このチュートリアルでは、ComposerをVPSにインストールし、Composerがどのように機能し、何ができるかを確認します。 このために、Ubuntuを実行しているサーバーと、すでにインストールされているLAMPスタックを使用します。 Composerの特定の要件については、Linux、OS X、およびWindowsで同様に実行されますが、PHP5.3.2以降がインストールされている必要があります。
すべての要件がインストールされていることを確認してください。
sudo apt-get install php5 git php5-curl
インストール
まず、Composerをプロジェクトフォルダーにダウンロードする必要があります。 この目的のために、 / var / www ApacheWebルートフォルダーmy_projectに空のフォルダーを作成しましょう。
cd /var/www mkdir my_project cd my_project
次のコマンドを使用して、Composerをこのフォルダーにダウンロードします。
curl -sS https://getcomposer.org/installer | php
次のような成功メッセージが表示されます。
All settings correct for using Composer Downloading... Composer successfully installed to: /var/www/my_project/composer.phar Use it: php composer.phar
プロジェクトフォルダをチェックインすると、ダウンロードされたファイルが1つだけであることがわかります。composer.phar-コマンドラインから実行できるPHPアーカイブファイル。
プロジェクトとは別のフォルダーにいるが、Composerをダウンロードするためにプロジェクトフォルダーに戻りたくない場合は、-install-dir オプションを指定すると、指定した場所にダウンロードされます。 :
curl -sS https://getcomposer.org/installer | php -- --install-dir=/var/www/another_folder
このコマンドはどこからでも実行でき、Composerは / var /wwwにあるanother_folderにインストールされます。 Composerが正しく機能しているかどうかを確認するには、次のコマンドを使用して、使用可能なコマンドのリストを表示します。
php composer.phar
Composerの使用
プロジェクトでComposerを使用するには、composer.jsonという1つのファイルが必要です。 このファイルでは、プロジェクトの依存関係について説明します。 私たちのプロジェクトが、DigitalOceanAPIとの対話を支援するDigitalOceanライブラリに依存しているとしましょう。 それでは、ファイルを作成しましょう。
nano composer.json
そして、このファイルでは、次のように貼り付けることができます。
{ "require": { "toin0u/digitalocean": "1.2.1" } }
ファイルを保存して終了します。 この単純なコードブロックを使用して、ベンダー toin0u によって作成されたライブラリ( digitalocean と呼ばれる)がプロジェクトに必要であることを指定します。 コロンの後に必要なバージョンを記述します。この場合は1.2.1です。 ここでは、必要なバージョンを指定でき、ワイルドカードを使用することもできます。 しかし、パッケージに関するこの情報はどこで入手できますか?
composer.jsonファイルPackagistで指定する必要のあるすべての情報を含む、多くのライブラリを見つけることができるすばらしいWebサイトがあります。 DigitalOceanAPIライブラリはPackagistにもあり、requireブロックで指定する必要があるものを正確に確認できます。
バージョンにワイルドカードを使用するには、次のように指定できます。
"toin0u/digitalocean": "1.2.*"
これは、 1.2 で始まるすべてのバージョン(1.2.0、1.2.1など)と一致します。 さらに、1つだけでなく、複数の依存ライブラリを指定できます。 これを行うには、requireブロックに複数のエントリを追加します。
"require": { "toin0u/digitalocean": "1.2.1", "acme/foo": "1.0" }
プロジェクトで依存関係が指定されたので、Composerのコマンドを実行して、依存関係をフェッチしてプロジェクトにインストールする必要があります。
php composer.phar install
これにより、指定した番号に一致するパッケージの最新バージョンが検索され、プロジェクト内の /vendorというフォルダーにダウンロードされます。 この例では、 vendor / toin0u /digitaloceanフォルダーにライブラリがあります。 さらに、Composerは composer.lock ファイルを作成します。このファイルには、インストールしたパッケージの正確なバージョンを指定し、プロジェクトをそれらのバージョンにロックします。
.lock ファイルの目的は、Composerがプロジェクトに他のバージョンをインストールすることを制限することです。 そのため、installコマンドを実行すると、Composerは最初にこのファイルをチェックし、 .json ファイルが指示するものではなく、ファイルに指定されているものをインストールします。 依存関係がかなり厳しく、他の人がプロジェクトをデプロイする必要がある場合は、まったく同じバージョンのライブラリが使用されているので安心できるので、これは素晴らしいことです。
これまで見てきたように、 .lock ファイルがない場合、Composerは.jsonファイルからインストールした依存関係に基づいてファイルを作成します。 ただし、実際に .lock ファイルを上書きして、依存ライブラリを新しいバージョンにアップグレードする場合は、次のコマンドを実行できます。
php composer.phar update
これにより、 composer.json ファイルの条件に一致する依存ライブラリの最新の安定したバージョンが取得され、composer.lockファイルが新しい依存関係で上書きされます。 特定のライブラリのみを更新する場合(ほとんどの場合、これはおそらく当てはまります)、 update コマンドを実行して、更新する必要のあるパッケージを次の形式のオプションとして渡すことができます。
php composer.phar update vendor/package vendor/package2
または、ワイルドカードを使用して、特定のベンダーのすべてのパッケージを更新できます。
php composer.phar update vendor/*
自動読み込み
Composerのもう1つの優れた点は、自動読み込み機能です。 自動読み込み情報を提供するライブラリの場合、Composerはautoload.phpファイルをプロジェクトに含めることができる/vendorフォルダーに直接自動的に生成します。 次に、それらのライブラリのクラスの使用を直接開始できます。 PHPプロジェクトでは、次のように指定できます。
require 'vendor/autoload.php';
そして、あなたは行ってもいいです。
結論
Composerは、PHPの世界で広く使用されているツールです。 Composerを使用してパッケージと依存関係を管理およびインストールするプロジェクトやフレームワークは数多くあります。 したがって、それがどのように機能するかを理解することは非常に重要です。