SSH使用不可レンタルサーバーでComposerを使う方法


SSH使用不可レンタルサーバーでは、PHPのexec関数を使用して、疑似的にShellを起動します。その環境でComposerを使用する場合、普通のSSHのやり方では動かない場合があるため、ここにその方法をまとめていきます。

私はスターサーバーを使用しているので、それを例に書いていきます。

スポンサーリンク

疑似Shellを設置

総合サービス様から、コマンド実行ツールをダウンロードします。gs-cmd.phpを、ブラウザからアクセスできる場所に設置してください。
gs-cmd.phpにアクセスした後、pwdやlsコマンドが正常に動作することを確認してください。exec関数が使用できるサーバーの場合、正常に動作します。

疑似Shellでは、cdコマンド等の効力が持続しないため、コマンドを実行する度にカレントディレクトリを指定する必要があります。
cd カレントディレクトリに指定するパス ; 実行したいコマンド
という形式で入力することで、カレントディレクトリを毎回指定します。
スポンサーリンク

Composerを実行

私の場合、FTPによって /home/ユーザー名/composer/ というパスにcomposer.phar,jsonを設置しました。この場合について解説します。

まず、このままでcomposerが動くかどうか確かめます。
composer.pharのパーミッションを「実行可能」にした後
/home/ユーザー名/composer/composer.phar
コマンドを実行すると、

このようなエラーが出ました。
「HOMEかCOMPOSER_HOMEという環境変数が設定されていない」というエラーです。この場合、HOMEという環境変数をホームディレクトリに指定してやります。HOME環境変数を設定するコマンドは
export HOME="/home/ユーザー名/"
等となりますが、ホームディレクトリはレンタルサーバーごとに異なるので、先にホームディレクトリをご確認いただき、それを入力してください。

exportコマンドも、cdコマンド同様、毎回実行する必要があります。
export HOME="/home/ユーザー名/" ; 実行するコマンド
という形式で入力していきます。

以上を踏まえて、
cd /home/ユーザー名/composer/ ; export HOME="/home/ユーザー名/" ; ./composer.phar
を実行します。その結果、

Composerが起動しました。
composer.jsonを用意してあれば、
cd /home/ユーザー名/composer/ ; export HOME="/home/ユーザー名/" ; ./composer.phar install
を実行してインストールを行います。

このように、autoload fileの生成が終われば完了です。
FTP等により、vendorディレクトリ、composer.lockファイルが生成されていることを確認してください。

最後までご覧いただきありがとうございました。

last

フォローする