Laravelをエックスサーバーにデプロイできない時は、次の5個の原因が考えられます。どれもわたし自身が潜り抜けてきたエラーばかりです^^;
あなたの状況に合った方法をトライしてみてくださいね。
原因① シンボリックエラーがちゃんとできていない
エラーの検証方法としては、まずターミナルを使ってログイン後、デフォルトでプロジェクトが表示されるべきディレクトリ(ドメイン名/public_html)に移動します。
1 |
cd ドメイン名/public_html |
ここで【ls -l】コマンドを入力すると、ディレクトリ内のファイルの詳細が表示されます。
シンボリックリンクがちゃんと設定されていれば、下記のように、黄色枠にリンク名、->の後の赤枠に実際に表示するディレクトリが表示されるはずです。
もし上記のように表示されなければ、シンボリックリンクを設定してください。設定方法は下記で解説しています。
原因② PHPのバージョンが古すぎる
特徴としては、下記のようなエラーが出ます。
これはエックスサーバーのPHPが古すぎるために生じます。Laravel8以降を使うのであれば、PHPは7.3.0以上を用意しましょう。
PHPのバージョンの確認方法とバージョン変更方法は下記で解説しています。
原因③ .envファイルをアップロードしていない
特徴としては、下記のようなエラーが出ます。
プロジェクトにいる場所で下記のように入力してください。-aを付けると .env のような非表示ファイルも表示されます。
1 |
ls -a |
.envファイルが表示されなければ、作成しましょう。
FTP経由でアップロードでもよいですし、コマンドを使う場合には、下記の2つを入力しましょう。
1 2 |
cp .env.example .env php artisan key:generate |
.envファイルにはデータベースの設定等をいれておく必要がありますが、このあたりは下記の記事をご覧ください。
原因④ まだエックスサーバー側の準備が終わっていない
次のような画面がでてきます。
エックスサーバーのサーバーパネル/サブドメイン設定/サブドメイン一覧 でも【反映待ち】になっているかと思います。
設定が完了するまで、しばらく待ちましょう。
原因⑤ .htaccessの設定を行っていない
もし忘れていた場合は、こちらの記事を参考にしてください。
その他のエラー:まずはログを見てみましょう
ログにヒントが隠されていることも多くあります。ターミナルにログインし、プロジェクトをプルした場所に移動します。
1 |
cd laravel/プロジェクト名 |
ここからさらに、ログが入っているstorage/logsディレクトリに移動します。
1 |
cd storage/logs |
この中のlaravel.logファイルを開きます
1 |
less laravel.log |
ログが表示されます。最終行に移動するときは、Windowsの場合は【shiftキー】+ 【>】を押します。
日付+時刻から最新のログを見つけます。そこに書かれたエラーメッセージを確認して、解決の糸口にします。
お役立ちコード
デバック作業で役立つコードをピックアップしますね。
ls | 今いる場所にあるものを表示 |
---|---|
ls -l | 今いる場所にあるものを詳細表示 |
ln -s | シンボリックリンク作成
書き方:ln -s サーバーがアクセスするディレクトリ 実際に表示されるディレクトリ |
unlink | シンボリックリンク削除
書き方:unlink 削除するシンボリックリンク名 |
rm | ファイル削除
書き方:rm ファイル名 |
less | ファイル内確認・編集
書き方:less ファイル名 *:qコマンドで終了 |
さいごに
エラーがあったときには、まずは原因を見つけていきましょう。
上記の5つのエラー対策の中で使えるものがなければ、エラーログをチェックしてみてください。ブラウザに表示されるエラーメッセージもヒントになります。
なおLaravelプロジェクトをエックスサーバーにデプロイする方法は、前回までで8回にわたって解説しています。併せて参考にしてください。