動機
php を使った Web アプリを作ってみたいと思ったので、最近人気の Laravel に手を出してみることに。
初めにレンタルサーバーを使った簡単な実装を行うことに決めました。
ただ、試してみたいだけなので、金はかけたくない。ということで、Laravel を使える無料レンタルサーバーを探しました。
※最終的に実装は出来ていません。Laravel がスターサーバーフリーで上手くいくのか知りたかった、後学のためにどうして上手くいかないのか知りたい、そんな人向けです。
※「とにかく実装がしたいんだ!」って人は別の無料レンタルサーバー XREA free で Laravel を実装する記事も書いたので、そちら1をどうぞ。
※「俺は実装出来たぜ!馬鹿なやつだな、どうやったか教えてやるよ!」って人は記事を読んで、何処が間違っているか教えてください。
スターサーバーフリー2
PHP, MySQL が使えるレンタルサーバーを無料で借りられます。ただし、MySQL は1つしか使えないそう。(Word Press での利用を想定しているようですが、今回は無理やり Laravel で利用します。)
借りるためにはネットオウルへの登録が必要ですが、特に面倒な手続きはないので無料レンタルサーバーとしてはオススメです。
Laravel 実装に向けて パート1
スターサーバーフリーではシェルが使えないので、ローカル環境で Laravel を構築してそれをアップロードする形になります。
ローカル環境からサーバへ移行するための方法はこのサイト3を参考にしました。
結局、FTP接続で全ファイルを送りました。(半日以上かかりました (^-^;))
Laravel 実装に向けて パート2
スターサーバーフリーではルートディレクトリの index.html, index.php 等が最初に呼び出されるファイルに設定されています。
Laravel で最初に呼び出して欲しいファイルは プロジェクト名/public/index.php です。
最初に呼び出されるファイルを変更する方法として、シンボリックリンクを作成することが考えられます。
$ ln -s /プロジェクト名/public /プロジェクト名
ただ、スターサーバーフリーではシェルが使えないので、シンボリックリンクを作ることが出来ません。したがって、別の方法を考える必要があります。
ローカル環境では
$ pwd
~/プロジェクト名
$ php artisan serve
で http://localhost:8000 に表示できます。これは プロジェクト名/ 下の serve.php が動いてくれているようだったので、ファイル名を変更して最初に呼び出されるようにしてみました。
$ pwd
~/プロジェクト名
$ mv serve.php index.php
Laravel 実装に向けて パート3
これで http://ドメイン名 にアクセスすれば Web ページが表示されるようになりましたが、表示されるといっても 500 | server error が出るだけです。
なぜエラーが発生するのか、色々と調べた結果、このサイト4に辿り着きました。
$ php artisan key:generate
をする必要があるそうです。これもシンボリックリンクと同様、ローカル環境で作成して転送しても意味がありません。
もうお気づきでしょうか?……そうです。シェルが使えないので、このコマンドは打てないのです。したがって、私はここでスターサーバーフリーの利用を断念することにしました。
(Laravel が使えないだけで、ブログなどの別の用途には利用可能です。)
結果
スターサーバーフリーではシェルが開放されていないので、Laravel の実装は無理でした。
最後に(自戒の念を込めて)
何でも出来ると思い込んで調べ続けるのは辞めましょう。時間の無駄です。
(Qiita ではもっと上手くいかない例についてもまとめて欲しいです。失敗は成功のもと!)
そのレンタルサーバーで無理なら、別のレンタルサーバーを探す。レンタルサーバーで無理なら、クラウドサービスを探す。クレジットカードが無くて AWS が無理なら、Heroku を使う。など状況自体を変えましょう。
もしかしたら複雑な手順を踏めば出来るのかもしれませんが、簡単に実装出来ない状況が既に間違っています。試作で簡単に出来ないことは、実務でも使い物になりません。