web-dev-qa-db-ja.com

Laravel空白の白い画面

私のlaravelサイトは以前働いていましたが、最近Apache 2.4とPHP 5.5.7にアップグレードしました。

Laravel.mydomain.comにアクセスすると、白い空白の画面が表示されるようになりました。Apacheエラーログ、ルートなどには、以前のように問題ないはずです。

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

ここに私の.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
104
Mico

アパッチ

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

Laravel

LaravelのログまたはApacheのログを確認していますか?

Laravel 4.1にアップグレードしてから、アプリケーションがログの場所に書き込めないときに、白い画面の「エラー」(WSOD)が発生しました。これは、Apacheがapp/storageディレクトリ(「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

# 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
215
fideloper

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

$ Sudo chmod -R o+w storage/
63
EddardOmeka

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

  • Laravelルートフォルダーに移動します
  • bootstrap/cacheおよびstorageディレクトリーへの書き込み許可を付与します

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

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

pHPアーティザンキー:生成

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

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

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

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

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

23

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

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

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

error_reporting(E_ALL);
ini_set('display_errors', 1);
7
Hassan Gilak

Linuxを初めて使用したとき。通常、Laravelプロジェクトでこのエラーを見つけました。白のエラーはエラーを意味します。許可の問題またはエラーがある可能性があります。

2つの手順に従うだけで、チャンピオンのように動作します:)

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

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

(2)プロジェクトのクローンを作成したか、githubからプルした場合は、実行します

composer install

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

6
Vikash

CentOSサーバーで同様の問題に苦しんでいました。 php artisan servを使用し、ローカルマシンのポート8000​​を介してアクセスすると正常に機能しましたが、リモートマシンに特定のビューをロードさせることができませんでした。文字列を正常に返すことができ、いくつかのビューがロードされていました。ついにSELinuxの問題であることに気づく前に、しばらく権限の尾を追いました。私はそれを強制から寛容に設定しただけで、うまくいきました。同じ問題に遭遇している可能性のある他の誰かに役立つことを願っています。

setenforce permissive
4
Kamkat86

また、空白ページの問題が発生する可能性のある理由がもう1つあります。プロダクションモードで、設定ファイルをphp artisan(config:cache)でキャッシュした場合は、実行中のキャッシュファイルを削除してみてください。

php artisan config:clear

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

3
Boris Tetřev

私の場合、laravelを何度もインストールしており、フォルダーの書き込み許可が正しく付与されていると確信しています。

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

Sudo chmod 777 -R storage bootstrap

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

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

最後に、問題を解決するためにこの回線構成を追加しました。

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

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

2
qskane

composer updateを実行した後も同じ問題に直面しました

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

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

基本的には、monologおよび他の安定版パッケージのバージョンを以前のバージョンに戻したはずです。 composer updateにはしない方が良い

/ vendorフォルダーの両方を比較して気づいたことと、/vendor/monolog/monolog/src/Handlerの下のclassesファイルが作曲家の更新後に欠落していることがわかりました。

1
Amit Shah

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

1
antongorodezkiy

Vagrantマシンでセットアップするにはいくつかの問題があります。私にとって本当にうまくいくのは、実行することでした:

chmod -R o+w app/storage/

vagrantマシン内から。

参照: https://laracasts.com/lessons/vagrant-and-laravel

1
gvsrepins

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

return View::make('yourview');

とは対照的に

View::make('yourview');

1
emragins

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

1
Kevin

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

0
Hernan

Middleware関数の最後に次のコードを置くのを忘れた場合、理由はhandleになります。

return $next($request);
0
Farid Movsumov

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

ありがとうございました

0
user1846871

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

たとえば、ログがなく空白のページがあるredeclareエラーメッセージがありました。私自身のヘルパー機能とベンダー機能の間に矛盾がありました。

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

php artisan cache:clear

問題が発生した場合、ターミナルでプロンプトが表示され、Clueが表示され、解決策をGoogleで検索できます。

0
Khalil Laleh

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

cPanel> MultiPHP Manager> PHP 7.2に設定

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

0
Inigo

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

理由:不正なPHPバージョン

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

Cpanelホームページで利用可能なmultiphpマネージャーからcpanelでphpバージョンを変更できます。

0
Sagar Gautam

この。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
Kaushik Dey

このコマンドを実行すると解決しました:

php artisan view:clear

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

0
Andrew

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

簡単なヒント:クエリオブジェクトに->limit(1000)を追加します(1000は制限です)。

0
f055

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
Ben Wilson

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

0
Abed Putra

私の場合、BLANK WHITE SCREENの問題は、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'

これがあなたが愚かなエラーを見つけるのを助けることを願っています...

0
Absolutkarlos

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

php artisan cache:clear

White Spaces in App Name of .env fileであった問題を示しています

0
saad

通常の場合、エラーをログに記録する必要がありますnless

スクリプトがログファイルに書き込めない

  • パスを確認してください
  • 許可

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

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

memory_limit
max_input_time
max_execution_time

またはOSの制限など

0
Bdwey