Laravel空白の白い画面


117

私のlaravelサイトは以前は機能していたが、最近Apache 2.4およびPHP 5.5.7にアップグレードした。

これで、laravel.mydomain.comにアクセスすると、白い空白の画面が表示されます。これまで動作していたapacheエラーログ、ルートなどは何も問題ありません。

/var/sites/laravel/public/.htaccessに無効な行を挿入すると、.htaccessがロードされ、500が返されます。

ここに私の.htaccessがあります:

$ cat /var/sites/laravel/public/.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

ここに私の仮想ホストディレクティブがあります:

DocumentRoot "/var/sites/laravel/public"
ServerName laravel.mydomain.com
<Directory "/var/sites/laravel/public">
    AllowOverride All
    allow from all
    Options +Indexes
    Require all granted
</Directory>

そしてapachectl -S

$ /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
*:*                    is a NameVirtualHost
     default server mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
     port * namevhost mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
     port * namevhost laravel.mydomain.com (/usr/local/apache2/conf/extra/httpd-     vhosts.conf:34)
ServerRoot: "/usr/local/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/usr/local/apache2/logs/error_log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/usr/local/apache2/logs/" mechanism=default
PidFile: "/usr/local/apache2/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="daemon" id=1 not_used
Group: name="daemon" id=1 not_used

laravel.mydomain.comにLaravelの空の新規インストールを配置してみてください-それは機能しますか?
ローレンス、

HMM、作曲家でプロジェクトを作成しようとしましたが、opensslがないようです。後で簡単に追加する方法はありますか、または現在の構成オプション+ --with-opensslを使用してPHPを再コンパイルする必要がありますか?
Mico

1
すでに機能しているプロジェクトをステージングサーバーに移動すると、この空白の画面の問題が発生しました。私はそれでうまくいかなかったので、@ the-shift-exchangeの提案と同じようにして、Laravelのフレッシュインストールを作成することにしました。ステージングサーバーは古いバージョンのPHPを実行していました。Laravelには少なくともPHP v5.4.0が必要です。他の誰かが同じ問題を抱えている場合に備えて、私はそれを言及したいと思いました。
イグノサウルス2014

メモリ制限に達していないことを確認します。これにより、以前はLaravel 4
Smith

ちょうど別のデータポイント-Kubernetesにデプロイされたアプリでこれを実行し、NFSを使用してWebファイルをマウントしました。NFSのパフォーマンスが非常に遅いため、Laravelは妥当な時間内にビューをキャッシュできなかったようです。PHP-FPMは空の応答を返していました。すべてのビューを手動で削除して再キャッシュすることで修正されました。
ジョーニランド

回答:


222

Apache

この答えは、あなたの状況を説明したり助けて?Apache 2.4にアップグレードすると、Apache構成にいくつかの変更が加えられます。

ララヴェル

LaravelのログまたはApacheのログをチェックしていますか?

Laravel 4.1にアップグレードしてから、アプリケーションがログの場所に書き込めなかったときに、白い画面「エラー」(WSOD)が発生しました。app / storageディレクトリをApacheによって書き込み可能にすることでこれを常に解決してきました(「www-data」、「apache」、またはworld-writableのいずれかに書き込み可能なグループ-サーバーの設定によって異なります)。

Webサーバーユーザー

Ubuntu / Debianサーバーでは、PHPがユーザー「www-data」として実行されている可能性があります。CentOS / RedHat / Fedoraサーバーでは、PHPがユーザー「apache」として実行されている可能性があります。

PHPを実行しているユーザーがファイルを所有していることを確認します。

# Debian/Ubuntu
$ sudo chown -R www-data /path/to/laravel/files

# CentOS/RedHat/Fedora
$ sudo chown -R apache /path/to/laravel/files

ユーザーwww-dataまたはapacheとして実行していない可能性があることに注意してください。それはあなたのホスティングとセットアップに依存します!

ララヴェル4

# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w app/storage

# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w app/storage

Laravel 5+(6を含む)

# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w storage

# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w storage

#####
# The bootstrap/cache directory may need writing to also
##

# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w bootstrap/cache

# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w bootstrap/cache

9
許可の問題だったようです。laravelディレクトリをchmoddingすることで機能しました。
Mico

3
@fideloperこの回答は本当に私の日を救いました。WSODを取得していて、どこにもログに何も表示されません。app / storageをchmoddingすることで処理されます。私はあなたに私の仮想帽子を傾けます!
Tim Habersack 2013

これは本当に私をここに救ってくれてありがとう 私はX-padを取得していました:http応答でのブラウザーのバグを回避し、それはそれだと思った
Simon Bennett

4
ストレージフォルダーへのアクセス許可により、このような問題は解決しました。しかし、なぜlaravelがブラウザで権限の問題を表示しないのですか?
Musa 14

4
これは私にとっても問題を解決しました。「死の白い画面」ではなく、なんらかのエラーメッセージが表示された方がいいと思います。
dusty909 2014

65

Laravel 5とその新しいファイル構造に関するfideloperの回答の更新は次のとおりです。

$ sudo chmod -R o+w storage/

賞賛!ubuntu 14.04サーバーでのL5の問題を解決しました。
ディランピアース

マックOS X 10.10.3上で、私のために働いたとしても
デイブ

私のために働いた-CentOS 6.8(最終)
Mike

26

public / index.phpページでこれを試してください

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);

これは実際に私が必要としたものでした。サーバーの作業で何らかの理由で(Plesk)エラーログに何も記録されておらず、laravelログには何も記録されていなかったためです500画面、たくさんありがとう!
サム

画面も真っ白でエラーはありませんでした。すべての許可とすべてが完璧でした。この答えは私が実際に何が起こっているのかを知るのに役立ちました。ありがとう。
SI

昨日からこの問題を台無しにしています。私の場合、フォルダの許可を超えて、このチェックはサーバーがベンダーフォルダ内のすべてのフォルダを抽出していないことが報告されました!?何という謎....本当に良いアプローチです。アクセスの少ない公開サーバーに役立ちます。
CodeToLife

26

次の手順で、Laravel 5の空白の白い画面の問題を解決しました。

  • Laravelルートフォルダーに移動します
  • bootstrap/cachestorageディレクトリに書き込み許可を与える

sudo chmod -R 777ブートストラップ/キャッシュストレージ

  • 名前.env.exampleを変更.env
  • Laravelルートからのターミナル/コマンドプロンプトで次のコマンドを使用してアプリケーションキーを生成します。

php artisan key:generate

これにより、暗号化キーが生成さAPP_KEYれ、.envファイル内の値が更新されます

これで問題が解決するはずです。

それでも問題が解決しない場合はconfig/app.php、上記のアーティザンキー生成コマンドから生成された新しいキーで更新します。

'key' => env('APP_KEY', 'SomeRandomString'),

'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),


10

エラーを表示するためにストレージにアクセスできるようにした後でも空白ページが表示される場合は、これらの2行をpublic / index.phpの最初の行に配置して、少なくとも何が起こっているかを確認してください。私にとってこのエラーはそこにありました:クラス 'PDO'が/var/www/***/config/database.phpの行16に見つかりません

error_reporting(E_ALL);
ini_set('display_errors', 1);

6

私がLinuxを初めて使用したとき、通常、Laravelプロジェクトでこのエラーを見つけました。白いエラーはエラーを意味します、それはいくつかの権限の問題またはエラーがあるかもしれません。

あなたはちょうど2つのステップに従う必要があり、チャンピオンのように機能します:)

(1)許可を与える。プロジェクトのルートディレクトリからこれらのコマンドを実行します

(a) sudo chmod 777 -R storage
(b) sudo chmod bootstrap/cache

(2)プロジェクトを複製した場合、またはgithubからプルした場合は、次を実行します。

composer install

(3).envファイルを適切に構成すると、プロジェクトが機能します。


手順(2)がインストールにありませんでした。私は、プロジェクトをそのまま使用するために必要なすべてのファイルがディレクトリにあると考えて、プロジェクトを複製しました。私はまだ問題を抱えていましたが、これは重要なステップでした。
ジョナサンヒックマン2016年

5

CentOSサーバーで同様の問題に悩んでいました。php artisan servを使用して、ローカルマシンのポート8000​​経由でアクセスすることは問題なく動作しましたが、リモートマシンに特定のビューをロードさせることができませんでした。文字列を正常に返すことができ、一部のビューがロードされていました。それがSELinuxの問題であることをようやく気づく前に、しばらくの間、許可について私の尾行を追いかけました。私はそれを強制から許容に設定しただけでうまくいきました。同じ問題が発生している可能性がある他の誰かを助けることを願っています。

setenforce permissive

これは
いつも

5

空白のページの問題が発生する理由はもう1つあります。プロダクションモードで、php artisan(config:cache)によって構成ファイルをキャッシュした場合は、次のコマンドを実行してキャッシュファイルを削除してみます。

php artisan config:clear

または手動で削除します(bootstrap / cache / config.php)


1
私は他のすべてを試しました、そしてこれは私のために働いた最後のものです。
DavidHyogo

私のenvファイルが無効であることがわかりました。このコマンドを実行すると、通知されます。
SvEnjoyPro

4

このコマンドを実行すると、解決されました。

php artisan view:clear

空白のエラーページがキャッシュされていたと思います。キャッシュをクリアする必要がありました。


4

私の場合、laravel何度もインストールしており、フォルダの書き込み権限が正しく付与されているはずです。

上記のほとんどの答えと同様に:

sudo chmod 777 -R storage bootstrap

間違いは、私のnginx構成が公式ドキュメントに由来することです。

コピー後にドメイン名を変更しただけで、空白のページが表示されました。再起動nginxしてみましたphp-fpmが、うまくいきませんでした。

最後に、このライン構成を追加して問題を解決しました。

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

私は他の人を助けることができると思います。


1
私はこの問題で丸一日休みました。これがようやく私を救った答えです。私はあなたに賛成票以上のものを与えることができるといいのですが。ありがとうございました!
マイル

3

Laravel 5.8で空白の画面に直面する。ストレージとブートストラップフォルダーの両方に777の権限が与えられていれば、すべてが正常に見えます。オン

php artisan cache:clear

.envファイルのアプリ名の空白であった問題を示しています



1

WSODを引き起こす可能性のあるもう1つの原因は、次のように「return」キーワードが欠落していることです。

return View::make('yourview');

とは対照的に

View::make('yourview');


1

laravel 5.1にはPHP> = 5.5.9が必要なためです。PHPを更新すると問題が解決します。


1

私には奇妙ですが、私の場合、問題を解決するためにララベルのキャッシュをクリアする必要がありました。


1

私もやった後に同じ問題に直面しました composer update

composer required monolog/monologもインストールしようとしましたが、うまくいきませんでした。

次に、/ vendorディレクトリを削除して実行しcomposer install、通常どおりに作業しました。

基本的に、それは私のモノログと他の安定したパッケージのバージョンを以前に戻したに違いありません。そうしない方がいいcomposer update

/ vendorフォルダーを比較して気づいたのは、composerの更新後にこれらのclassesファイル/vendor/monolog/monolog/src/Handlerが見つからないことです。


1

エラーなしで空白の画面の背後にある多くの理由があるかもしれません。共有ホスティングでlaravelプロジェクトをアップロードしたいときはいつでも、この問題に何度も直面しました。

理由:不適切なPHPバージョン

私の場合、問題は間違ったphpバージョンが原因でした。ローカルコンピューターにphp 7.1バージョンがあり、共有ホスティングcpanelと同様に、php 5.6バージョンがありました。バージョンを5.6から7.1に切り替えるとうまくいきました。

cpanelのホームページで利用できるmultiphp managerからcpanelのphpバージョンを変更できます。


1

時々route.phpにあるかもしれません

Route::get('/{id}', 'Controller@show'..

前に書かれた

Route::get('/add', 'Controller@add'..

Controller::show()コントローラーを最初から開発し始めるときは、空のメソッドにすることができます。この場合、/addURL をリクエストすると空の空白ページが表示されます。これは、リクエストが/{id}ルートによって処理され、そのメソッドが何も返さないために発生します。

/add前にルートを配置してみてください/{id}


0

同じ動作の他の問題は、PHP 5.5.xでLaravel 3を使用することです。php 5.5の予約語であるため、いくつかのlaravel関数の名前 "yield()を変更する必要があります。



0

laravel + Ubuntu 14.04で初めて起動したときにも同じエラーが発生しました。ブートストラップとストレージフォルダーを右クリックするだけです>>>プロパティ>>>許可>>その他のアクセス>>>「ファイルの作成と削除」に変更します変更囲まれたファイルの権限

ありがとうございました


0

これをLaravelフォーラムから入手しましたが、最近LaravelバージョンとPHPバージョンをアップグレードし、かつnginxを実行している場合は、nginx設定ファイルを変更して、新しいPHPバージョンを反映していることを確認してください。例えば:

nginxサイト構成ファイル(ここでは/ etc / nginx / sites-available)で、変更します

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;


0

同じ問題があります。ストレージフォルダーのchmodフォルダーを既に変更しました。.envにデータベース設定を入力しますが、問題は修正されませんでした。私はLaravel 5.5を使用し、それを修正するためにPHP 5.6を使用して(cpanel-> PHP Selector)に移動し、PHP 7.1に変更して問題が解決しました。


0

通常の場合にエラーが記録されるべきでない限り、

スクリプトがログファイルに書き込めません

  • パスを確認してください
  • 権限

または、Appacheのような高レベルのチェックアプリサーバーログでエラーが発生しました|| Nginx

または、PHPのini設定のようなリソースの制限です

memory_limit
max_input_time
max_execution_time

またはOSの制限など


0

ストレージおよびキャッシュフォルダーのアクセス許可の問題とphpバージョンの問題に加えて、エラーメッセージなしで空白ページを表示する別の理由が考えられます。

たとえば、ログなしで空白の白いページを含む再宣言エラーメッセージがありました。自分のヘルパー関数とベンダー関数の間に矛盾がありました。

開始点としてartisanコマンドを実行することをお勧めします。例えば:

php artisan cache:clear

問題があった場合は、ターミナルでプロンプトが表示され、手がかりがあり、グーグルで解決策を見つけることができます。


0

空白の画面は、Laravelアプリが表示する情報が多すぎてPHPの制限が有効になっている場合にも発生します(たとえば、1ページに数万のデータベースレコードを表示する)。最悪の部分は、Laravelログにエラーが表示されないことです。PHP FPMログにもエラーは表示されないでしょう。たとえば、nginxがのようなものをスローするなど、httpサーバーのログにエラーが見つかる場合がありますFastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted

簡単なヒント:クエリオブジェクトの制限を->limit(1000)どこに追加するか1000


0

Vagrant Homesteadを使用してローカル開発からアップロードして、自分のサーバーでLaravel 5.8アプリを実行しようとすると、この問題が発生しました。しばらくして、私が実行していたライブサーバーのdevサブドメインがPHP 5.6に設定されていることがわかりました。

cPanel> MultiPHP Manager> PHP 7.2に設定

私のためにこれを修正しました。これが誰かを助けることを願っています。


0

この.htaccessを使用して解決します

Options +ExecCGI
addhandler x-httpd-php5-cgi .php
Options -MultiViews
DirectoryIndex index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

0

私の場合、空白の白い画面の問題は、envファイルのタイプミスや間違った文字と同じくらい簡単でした。私はsocialiteを実装していたので、Google +の.env認証情報を次のように設定しました。

G+_CLIENT_ID = Your G+ Client ID
G+_CLIENT_SECRET = Your G+ Client secret
G+_REDIRECT = 'http://localhost:8000/callback/google'

ただし、.envファイルでは「+」記号を使用できないため、この修正を行う必要があります。

GOOGLE_CLIENT_ID = Your G+ Client ID
GOOGLE_CLIENT_SECRET = Your G+ Client secret
GOOGLE_REDIRECT = 'http://localhost:8000/callback/google'

これがおかしなエラーを見つけるのに役立つことを願っています...


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.