質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

composerが使えません

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 16K+

WebDesigner

score 11

環境

・Google Could Platform(Compute Engine)VMインスタンス
・CentOS 7
・PHP5.6

実現したいこと

PHPからメールを送れるようにするためSendGridライブラリを利用できるようにしたい。
が、そのためにはcomposerが必要らしいので使えるようにしたいです。

現状

https://sendgrid.kke.co.jp/blog/?p=1066
上記のサイトで紹介されている手順でSendGridライブラリを使おうと設定を進めていると
composerの実行部分でエラーが発生してしまいました。

[root@xxx sendgridjp-php-example]# composer install
-bash: composer: command not found


composerがインストールされていないのかと思いインストールしたのですが結果は変わりませんでした。

[root@xxx sendgridjp-php-example]# curl -sS https://getcomposer.org/installer | php
[root@xxx sendgridjp-php-example]# ./composer.phar # php composer.phar 
Do not run Composer as root/super user! See https://getcomposer.org/root for details
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.2.0 2016-07-19 01:28:52

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[root@guido-webserver sendgridjp-php-example]# composer --version
-bash: composer: command not found

なぜインストールしてもcomposerコマンドが使えないのかよくわかりません。
もし分かる方が居られたらご教授お願い致します。

試したこと

現状に悪影響を与えているのかわからないのですが
SendGridがちゃんと使えるのか確認のため以下の手順でメールが送れるか試しました。(メールは送れました)
http://www.apps-gcp.com/sendgrid-gce/

composerをインストール時に1行目に警告がでたのでroot権限外でインストールしてみたのですが結果は変わりませんでした。

 追記

ご回答ありがとうございます。
それぞれやってみたのですが、自分の力及ばずうまくいきませんでした・・・。すみません。

実行結果は以下のようになりました。

[xxx@xxx ~]$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading 1.2.0...
Composer successfully installed to: /home/xxx/composer.phar
Use it: php composer.phar
[xxx@xxx ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xxx/.local/bin:/home/xxx/bin
[xxx@xxx ~]$ sudo mv composer.phar /usr/local/bin/
[xxx@xxx ~]$ composer -v
-bash: composer: command not found
[xxx@xxx ~]$ php composer.phar -v
Could not open input file: composer.phar
[xxx@xxx ~]$ cd /usr/local/bin/
[xxx@xxx bin]$ php composer.phar -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.2.0 2016-07-19 01:28:52

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ちなみにcomposer.pharがあるディレクトリなら実行できるようだったので
composer.jsonがあるディレクトリに直接composer.pharを設置して
php composer.phar install
を実行してみると真っ赤な文字と共に以下のエラーが帰ってきてしまいました・・・。

[xxx@xxx sendgridjp-php-example]$ php composer.phar install
Loading composer repositories with package information
Updating dependencies (including require-dev)

  [RuntimeException]                                                                            
  /var/www/html/private/sendgridjp-php-example/vendor does not exist and could not be created.  

install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]...

この結果から何か私の間違いなどわかるでしょうか?
重ね重ねの質問申し訳ございませんがよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

composer.pharを/usr/local/bin/などのパスの通ったところに移動すると、composerと打ち込むだけで実行できます。
Google Cloud Platformではどこまで権限があるか分かりませんが。

追記:
単純な方法はパスの通った所にファイル名を変更して移動する方法です。
te2jiさんの回答の通りです。

mv composer.phar /usr/local/bin/composer


それでもいいですが、composer.pharをアップデートする時などに毎回/usr/local/bin/にリネームして移動しなければなりません。
そこで、asahina_devさんのおっしゃる通り、エイリアスを設定する方法があります。

alias composer="php /composerをダウンロードするパス/composer.phar"


これは、
php /composerをダウンロードするパス/composer.phar
で実行するところを
composer
で実行できるようにエイリアスを設定しています。

これでどこでもcomposerというコマンドを使うことができます。

composer.pharをアップデートする際には、/composerをダウンロードするパス/composer.pharを更新していくことになります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/28 00:59

    ご回答ありがとうございます。
    $ echo $PATH
    でパスを確認してcomposer.pharを移動させてみたのですが、はやりcomposerコマンドが使えませんでした。
    もしよろしければ質問文に状況を追記しましたのでご覧いただけると光栄です。

    キャンセル

  • 2016/07/28 01:03

    すみません、言葉足らずでした。
    上記に付け足します。

    キャンセル

  • 2016/07/28 01:25

    ありがとうございます!
    エイリアスを設定することでいけました!
    すごくわかりやすい解説をして頂けて大変助かりました!ありがとうございます!

    キャンセル

  • 2016/07/28 01:29

    更に回答し忘れていましたが、ファイルをリネームして移動する方法は、多分パーミッションや所有者の問題があります。
    rootで作業すれば問題ないのですが。
    解決ということですが念のため……。

    キャンセル

+2

composer がインストールされてない端末の場合は 

php composer.pher install
php composer.pher update

で実行します。

PHPからメールを送れるようにするためSendGridライブラリを利用できるようにしたい。 
が、そのためにはcomposerが必要らしいので使えるようにしたいです。

いいえ、関係ありません。

phpリポジトリ(packagist) からライブラリをダウンロードするのに必要なだけです。

PATHが通っているディレクトリにリネームして配備する方法もありますが。
これはあまりお勧めできません。私はするなら以下を進めますが

alas composer="php /path/to/composer.pher"

前述の `php composer.pher {command}' を使います

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/28 00:16

    編集後の内容であれば、質問された方と認識合いそうですね。
    この内容であれば、私の回答いらなかったな^^;

    キャンセル

  • 2016/07/28 01:09

    大変恐縮なのですが、もしよろしければcomposerを使わずSendGridライブラリを利用できるようにする方法があれば教えていただけると・・・うれしいです。。

    キャンセル

  • 2016/07/28 01:24

    エイリアスを設定することでいけました!ありがとうございます!

    キャンセル

+2

グローバルにインストール

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

これで、Composerを実行をphp composer.pharの代わりにcomposerだけで実行できます。
逆に、mv させないのであれば、php composer.pharで使用することが出来ます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/28 00:58

    ご回答ありがとうございます。
    試してみたのですがcomposer、php composer.pharともに実行できませんでした。
    質問文を追記したのでもしよろしければご覧いただけると助かります。

    キャンセル

  • 2016/07/28 01:01

    mv 先が間違っています。
    mv composer.phar /usr/local/bin/composer
    リネームします。

    キャンセル

  • 2016/07/28 01:15

    $ sudo mv composer.phar /usr/local/bin/composer
    で実行してみたのですがはやり
    $ composer -v
    -bash: composer: command not found
    となってしまいました。

    キャンセル

  • 2016/07/28 02:18 編集

    多分どこかで手順を間違っています。
    パスも通っているので、composer ファイルがあり、実行権限があれば
    -bash: composer: command not found
    にはなりません。

    installer | php では、インストール作業(鍵ファイルの書き込み等)と共に、実行権限が付与されたファイル(composer.phar)が作成されるので、mv に失敗しているか、どこかで権限を変えてしまっているのだと思います。後は root でコマンド打ってるとか。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る