私の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
この答え はあなたの状況を説明するのに役立ちますか? Apache 2.4にアップグレードすると、Apache構成にいくつかの変更が加えられます。
LaravelのログまたはApacheのログを確認していますか?
Laravel 4.1にアップグレードしてから、アプリケーションがログの場所に書き込めないときに、白い画面の「エラー」(WSOD)が発生しました。これは、Apacheがapp/storageディレクトリ(「www-data」、「Apache」、またはworld-writableのいずれかで書き込み可能-サーバーの設定に依存します)で書き込み可能にすることで常に解決しました。
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として実行していない可能性があることに注意してください。ホスティングとセットアップに依存します!
# 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
# 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
Laravel 5のfideloperの回答とその新しいファイル構造の更新は次のとおりです。
$ Sudo chmod -R o+w storage/
次の手順で、Laravel 5の空白の白い画面の問題を解決しました。
bootstrap/cache
およびstorage
ディレクトリーへの書き込み許可を付与しますSudo chmod -R 777ブートストラップ/キャッシュストレージ
.env.example
の名前を.env
に変更しますpHPアーティザンキー:生成
これにより、暗号化キーが生成され、APP_KEY
ファイルの.env
の値が更新されます
これで問題が解決するはずです。
それでも問題が解決しない場合は、上記の職人キー生成コマンドから生成された新しいキーでconfig/app.php
を更新します。
'key' => env('APP_KEY', 'SomeRandomString'),
に
'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),
Public/index.phpページでこれを試してください
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
エラーを表示するためにストレージをアクセス可能にした後でも空白のページが表示される場合は、これらの2行をpublic/index.phpの最初の行に配置して、少なくとも何が起こっているかを確認してください。私にとってはこのエラーがありました:クラス「PDO」が/var/www/***/config/database.phpの16行目に見つかりません
error_reporting(E_ALL);
ini_set('display_errors', 1);
Linuxを初めて使用したとき。通常、Laravelプロジェクトでこのエラーを見つけました。白のエラーはエラーを意味します。許可の問題またはエラーがある可能性があります。
2つの手順に従うだけで、チャンピオンのように動作します:)
(1)許可を与えます。プロジェクトのルートディレクトリからこれらのコマンドを実行します
(a) Sudo chmod 777 -R storage
(b) Sudo chmod bootstrap/cache
(2)プロジェクトのクローンを作成したか、githubからプルした場合は、実行します
composer install
(3).envファイルを適切に構成すると、プロジェクトが機能します。
CentOSサーバーで同様の問題に苦しんでいました。 php artisan servを使用し、ローカルマシンのポート8000を介してアクセスすると正常に機能しましたが、リモートマシンに特定のビューをロードさせることができませんでした。文字列を正常に返すことができ、いくつかのビューがロードされていました。ついにSELinuxの問題であることに気づく前に、しばらく権限の尾を追いました。私はそれを強制から寛容に設定しただけで、うまくいきました。同じ問題に遭遇している可能性のある他の誰かに役立つことを願っています。
setenforce permissive
また、空白ページの問題が発生する可能性のある理由がもう1つあります。プロダクションモードで、設定ファイルをphp artisan(config:cache)でキャッシュした場合は、実行中のキャッシュファイルを削除してみてください。
php artisan config:clear
または手動で削除します(bootstrap/cache/config.php)
私の場合、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;
}
私は他の人を助けることができると思います。
composer update
を実行した後も同じ問題に直面しました
composer required monolog/monolog
もインストールしようとしましたが、動作しませんでした。
その後、/ vendorディレクトリを削除してcomposer install
を実行し、通常どおりに動作しました。
基本的には、monologおよび他の安定版パッケージのバージョンを以前のバージョンに戻したはずです。 composer update
にはしない方が良い
/ vendorフォルダーの両方を比較して気づいたことと、/vendor/monolog/monolog/src/Handler
の下のclasses
ファイルが作曲家の更新後に欠落していることがわかりました。
奇妙なことですが、私の場合は、問題を解決するためにlaravelのキャッシュをクリアする必要がありました。
Vagrantマシンでセットアップするにはいくつかの問題があります。私にとって本当にうまくいくのは、実行することでした:
chmod -R o+w app/storage/
vagrantマシン内から。
次のように、WSODを引き起こす可能性のあるもう1つのことは、「return」キーワードが欠落していることです。
return View::make('yourview');
とは対照的に
View::make('yourview');
Laravel 5.1にはPHP> = 5.5.9が必要なためです。 phpを更新すると問題が解決します。
同じ動作の他の問題は、Laravel 5.5.xでPHP 3を使用することです。いくつかのlaravel関数の名前 "yield()を変更する必要があります。これは、PHP 5.5の予約語であるためです。
Middleware
関数の最後に次のコードを置くのを忘れた場合、理由はhandle
になります。
return $next($request);
Laravel + Ubuntu 14.04で初めて起動したときにも同じエラーが発生しました。ブートストラップとストレージフォルダーを右クリック>>>プロパティ>>> permission >>その他のアクセス>>>「ファイルの作成と削除」に変更します変更同封ファイルの許可
ありがとうございました
ストレージおよびキャッシュフォルダーのアクセス許可の問題とPHPバージョンの問題に加えて、エラーメッセージなしで空白ページを表示する別の理由が考えられます。
たとえば、ログがなく空白のページがあるredeclareエラーメッセージがありました。私自身のヘルパー機能とベンダー機能の間に矛盾がありました。
出発点として、artisan
コマンドを実行することをお勧めします。例えば:
php artisan cache:clear
問題が発生した場合、ターミナルでプロンプトが表示され、Clueが表示され、解決策をGoogleで検索できます。
Vagrant Homesteadを使用してローカル開発からアップロードして、サーバーでLaravel 5.8アプリを実行しようとすると、この問題が発生しました。しばらくして、実行中のライブサーバー上のdevサブドメインがPHP 5.6に設定されていることがわかりました。
cPanel> MultiPHP Manager> PHP 7.2に設定
私のためにこれを修正しました。これが誰かを助けるかもしれないことを願っています。
エラーのない空白の画面の背後には多くの理由があります。共有ホスティングでlaravelプロジェクトをアップロードするたびに、この問題に何度も直面しています。
理由:不正なPHPバージョン
私の場合、問題は間違ったphpバージョンが原因でした。ローカルコンピューターにphp 7.1バージョンがあり、共有ホスティングcpanelのように、php 5.6バージョンがありました。バージョンを5.6から7.1に切り替えるとうまくいきました。
Cpanelホームページで利用可能なmultiphpマネージャーからcpanelでphpバージョンを変更できます。
この。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>
このコマンドを実行すると解決しました:
php artisan view:clear
空白のエラーページがキャッシュされた方法だったと思います。キャッシュをクリアする必要がありました。
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
は制限です)。
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;
同じ問題があります。 Storageフォルダーのchmodフォルダーは既に変更しています。 .envでデータベース設定を入力しますが、問題を修正しませんでした。私はLaravel 5.5を使用し、PHP 5.6を使用し、それを修正するために(cpanel-> PHP Selector)に行き、PHP 7.1に変更しました終わらせる。
私の場合、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'
これがあなたが愚かなエラーを見つけるのを助けることを願っています...
Laravel 5.8の空白の画面に直面しています。ストレージとブートストラップフォルダーの両方に777の権限が与えられていれば、すべてがうまくいくようです。に
php artisan cache:clear
White Spaces in App Name of .env fileであった問題を示しています
通常の場合、エラーをログに記録する必要がありますnless
スクリプトがログファイルに書き込めない
または、Appacheのような高レベルのチェックアプリサーバーログでエラーが発生しました|| Nginx
または、PHP ini設定などのリソース制限です
memory_limit
max_input_time
max_execution_time
またはOSの制限など