これはなに
ElastickbeanstalkにSSHしてPHPのコードを動かそうと思ったら
なぜかsegment faultになったけど
ルーティングファイルに直接処理を書いたら落ちずに実行できたよという話です。
背景
ElastickBeanstalkのインスンタンスにSSHでログインして
Laravelのコマンドを実行したいのですが、実行後1,2秒するとsegment faultが発生してしまう状況にハマってました。
local環境だと動くし、メモリも不足してなさそうな感じで、原因はまったく不明です。
tinker
から処理を呼び出してもダメでした。
不思議な力によってプロセスがキルされてるのかもしれません。AWSのセキュリティ機構みたいななにかが。
対処方法
SSHしてコマンド実行するのは諦めました。
そこでひらめいたのが、Webからアクセスしたら処理が呼び出されるようにする方法です。
Laravelのルーティングが記載されたファイルを編集します。
私は、SSHしたままvim
で直接コードを変えました。 一時的なコマンド実行なので大目に見て欲しい。
Route::get('foo', function () {
return 'Hello World';
});
こんな感じで書けばブラウザから /foo
にアクセスすると処理が実行されてHello World
と表示されるはずです。
ここで
resolve()
などのヘルパーを使って使いたいクラスをインスタンス化して、必要な処理を呼び出すことができます。
また、このケースでは文字列をreturnしてますが、標準出力した文字もブラウザ上に表示されるます。
以上、参考になりましたら幸いです。