例外ハンドラのエラー。-Laravel


118

Laravelインストール関連の質問です。公開されているUnixサーバーのセットアップがあります。

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.org
DocumentRoot "/var/www/mydomain"
ServerName mydomain.org
ServerAlias www.mydomain.org
ErrorLog "/var/log/mydomain.org-error_log"
CustomLog "/var/log/mydomain.org-access_log" common
</VirtualHost>

/ var / www / mydomainからドキュメントを提供できます。 。 http://mydomain.org/test.phpにtest.phpが含まれています。

<?php echo 'test';

正常に動作します。

bashで、Composerを介してLaravelをインストールし、ファイルを確認します。

# ls /var/www/mydomain/my-laravel-project

.gitattributes  CONTRIBUTING.md artisan         composer.json   phpunit.xml readme.md       vendor
.gitignore      app             bootstrap       composer.lock   public          server.php

だから私が閲覧すると:

http://mydomain.org/my-laravel-project/public/

なぜ私のアプリケーションは報告するのですか?

Error in exception handler. 

ブラウザで-空白の白い画面で?Laravelスプラッシュスクリーンが表示されることを期待しています。

さらに、ログファイルは何も明らかにしません。


PHPバージョン?サーバーのログインをチェックして、サーバーが/var/log何を言っているかを確認できますか。
Jason Lewis 14

3
Laravelのエラーログはapp/storage/logsどうですか?そして、すべてのストレージディレクトリは書き込み可能ですか?
ジェイソンルイス14

1
@ジェイソンあなたが言ったように-それはストレージディレクトリでした。ストレージ上のchmod -R 757とスプラッシュスクリーンを打つことができます。+1と感謝。
クッキー

回答:


246

より安全なオプションは、ストレージディレクトリのグループをWebサーバーグループに変更し(通常はapacheまたwww-dataはですが、これはオペレーティングシステムによって異なる場合があります)、ディレクトリの権限をのままにし775ます。

chgrp -R www-data app/storage

またはchown

chown -R :www-data app/storage

次に、ディレクトリの権限がであることを確認します775

chmod -R 775 app/storage

Laravelのウェブサイト

Laravelでは、構成する権限のセットが必要になる場合があります。app/ storage内のフォルダーには、Webサーバーによる書き込みアクセスが必要です。


14
一般に、グループの所有者をWebサーバーに変更し、「世界」にファイルへのフルアクセスを許可しない方が安全です。ディレクトリのデフォルトは775なので、これで十分です。chgrp -R apache app / storage
hlev

5
Macでは、上記のコマンドは機能しませんでした。ただし、このコマンドでは次のようになりましたsudo chown -R _www app/storage(必要に応じて_wwwをApacheサーバー名に置き換えてください)
Leo Galleguillos

4
そして、私はグループに書き込み許可を与える必要がありましたchmod -R g+w app/storage
Daniel AA Pelsmaeker '19

ありがとう、私はこれが役に立ったと思った。ただし、後で「php artisan migrate ...」を実行しようとすると問題が発生します。「/ app / storage /」フォルダに「Permission Denied」エラーが表示されるため、所有者へのすべての権限を修正することになります。 「www-data」、「/ bootstrap / compiled.php」権限エラーが発生するまで。それも同様に所有者「www-data」に設定するか、すべてを0777に設定することは良い考えですか?
peedeeaay 2014

3
(y)変更に感謝します!chmod 777は多くの子供たちの子供時代を台無しにしました:)
MA Hossain Tonu

17

Laravel 5.2

chmod -R 777ストレージ

古いLaravel chmod 777 app / storage / *

自分以外のユーザーアカウントを使用せずに、適切にロックダウンされた専用サーバーを使用している場合、777が他の何よりもセキュリティリスクをもたらすことはありません。悪意のあるユーザーがそれを利用するには、他にもいくつかの脆弱性が存在する必要があります。その時点では、とにかく777アクセス許可はおそらく無効です。ただし、信頼できない他のユーザーとの共有サーバーを使用している場合は、より複雑なアクセス許可を調べるか、ホスティングプロバイダーが既に分離を提供しているかどうかを確認する必要があります。

彼らは本当にこれをクイックスタートドキュメントに入れ、さまざまな設定の例を提供するべきです。さらにディレクトリが自動的に作成されるため、最初のロード後に再度実行する必要がある場合もあります。ログで書き込みエラーを確認します。

また、DocumentRootは/ path / to / laravel-project / publicである必要があります


4
同意しました、またはより詳細なエラーメッセージ
homerjam

3
彼らはすべきではないことがLaravelアプリケーションを実行するための正しい方法ではありませんので、www.domain.com/project/publicに行くことを教えてくれ。アプリケーション全体のエントリポイントはpublic / index.phpのみで、public / *だけを提供するようにWebサーバーを設定する必要があります。あなたはApacheでそれを非常に簡単に行うことができます。nginxを使用している場合は、おそらく何をしているのか知っているでしょう。また、安価なcPanelホスト(お悔やみ申し上げます)を使用している場合、パブリックを指すようにWebルートを設定することも簡単です。
ボーファスト2014年

11
真剣に777を示唆することは、セキュリティ原則の最も明白な違反である...
ftrotter

1
私はそれが1年前のものであることを知っていますが、777はこれを行うための最悪の方法です。@ ftrotterが言ったように、セキュリティのすべてのルールに違反します。
ザック

2

app/storage/sessionsフォルダ内の古いセッションを削除775app/storage、その後、それが火のように機能することを許可します!

chmod -R 775 app/storage

幸運を!


1

バンドワゴンはずっと昔にこれを通過しましたが、それでも「例外ハンドラーのエラー」に関する別のアドバイスがあります。

私が "php artisan"を実行したとき、これは私に起こりました。これは、環境が一般的に機能しているかどうかを評価するための良い方法です。

私はそれを実行しましたが、そのエラーが発生しました。プロジェクトのルートディレクトリにあるアーティザンファイルを編集してtry catchステートメントを追加するまで、問題を特定できませんでした。

try {
    $artisan = Illuminate\Console\Application::start($app);
}
catch (Exception $e)
{
    dd($e->getMessage());
}

その時点でようやく啓蒙的なメッセージを見ました。

string(41) "Connection refused [tcp://127.0.0.1:6379]"

私の場合、これは不適切なredis構成でしたが、あなたの場合は何でもかまいません。

これが誰かのお役に立てば幸いです。少なくとも次回ここに着いたときに、自分の答えが見つかるでしょう。


ありがとう。私はこれを使用して問題を見つけました-印刷されましたcould not find driver。そして私は、私がインストールされていた見つけたphp-mysql一方で、php7.0-mysql必要とされました。このリンクはまた私を助けた- digitalocean.com/community/tutorials/...
Udayrajデシュムク

0

これを解決する最も簡単な方法は、sudoで職人を開始することです。これにより、必要なすべての権限が職人に与えられ、セキュリティ上の問題も発生しません。

したがって、代わりに職人を開始するには、

$ php artisan serve

使ってみてください:

$ sudo php artisan serve 

したがって、権限を変更する必要はありません


-5

同じ問題があり、chmodコマンドラインを使用して、ディレクトリapp / storageから775に権限を変更するだけです


5
これは、現在受け入れられている回答で既に指摘されています(そして、ディレクトリグループを正しく設定して完全に正しい回答にするための回答からの情報が必要になります。)
Matt Gibson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.