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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

2回答

4152閲覧

シェルスクリプトで Composer のインストールができない

hideki_nakajima

総合スコア44

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2019/06/24 05:06

編集2019/06/24 05:47

Composer のインストールにスワップファイルを利用したい

AWS EC2 において、Auto Scaling で自動作成された CentOS のインスタンスをシェルスクリプトで初期化しようとしています。

その場合、普通に Composer をインストールしようとするとメモリ不足でエラーが発生してしまいます。
スワップファイルを作成して対応できると聞き、以下のように書きました

sh

1# この行までに行っていること: Apache, PHP, Git, MariaDB のインストール、git clone 2 3# Generate a swap file for composer 4sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 5sudo /sbin/mkswap /var/swap.1 6sudo /sbin/swapon /var/swap.1 7 8# Install composer 9cd /var/www/html 10php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 11php composer-setup.php 12php -r "unlink('composer-setup.php');" 13php composer.phar install

しかし、作成されたインスタンスを確認すると、Composer のインストールができていないことが分かりました。
スワップファイルが作成されるところまではできているので、Composer をインストールする段階でコケているのは分かっています。

シェルスクリプトで実行した時だけ失敗する

どうコケているのか確かめるために、素の CentOS インスタンスを立ち上げ、シェルスクリプトの中身を順にコピペして実行したのですが、この方法だと Composer は正常にインストールできてしまいました

シェルスクリプトで初期化した時だけ失敗するのは、どのような原因が考えられますか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

コマンドラインとシェルスクリプトで、実行ユーザーが違う、ということはありませんか?

投稿2019/06/24 05:51

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hideki_nakajima

2019/06/24 05:58

ご回答ありがとうございます! EC2 の起動設定では、ユーザーの設定したスクリプトは root ユーザーによって実行されるそうです。 スクリプトがルート権限で実行された時どう動いてるのかを確かめたいのですが、EC2 にはルートログインすることができません‥‥
guest

0

自己解決

起動ログを参照 sudo grep cloud-init /var/log/messages

起動ログを漁ったところ、このようなエラーが記述されていました。
(ちなみに、 CentOS では本来 EC2 が生成するログファイル/var/log/cloud-init-output.logが作られないようです)

The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly

そこで、インストールの実行前に以下の行を追加しました。

export HOME="/root"

結果、正常に Composer をインストールすることができました!ありがとうございました。

参考

投稿2019/06/24 08:55

hideki_nakajima

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問