SSH使用不可レンタルサーバーでは、PHPのexec関数を使用して、疑似的にShellを起動します。その環境でComposerを使用する場合、普通のSSHのやり方では動かない場合があるため、ここにその方法をまとめていきます。
私はスターサーバーを使用しているので、それを例に書いていきます。
スポンサーリンク疑似Shellを設置
総合サービス様から、コマンド実行ツールをダウンロードします。gs-cmd.phpを、ブラウザからアクセスできる場所に設置してください。
gs-cmd.phpにアクセスした後、pwdやlsコマンドが正常に動作することを確認してください。exec関数が使用できるサーバーの場合、正常に動作します。
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ファイルが生成されていることを確認してください。
最後までご覧いただきありがとうございました。