Laravel boş beyaz ekran


117

Laravel sitem daha önce çalışıyordu, yakın zamanda Apache 2.4 ve PHP 5.5.7'ye yükselttim.

Şimdi laravel.mydomain.com'a gittiğimde beyaz bir boş ekran alıyorum, apache hata günlüklerinde, rotalarda vb. Hiçbir şey daha önce çalıştığı gibi iyi olmamalı.

/var/sites/laravel/public/.htaccess'e geçersiz bir satır eklediğimde 500 aldığım için .htaccess yükleniyor.

İşte benim .htaccess'im:

$ 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]

İşte sanal ana bilgisayar yönergem:

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>

Ve 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 içine boş yeni bir Laravel yüklemesini deneyin ve koyun - o zaman çalışıyor mu?
Laurence

HMM, besteci ile proje oluşturmaya çalıştım ve görünüşe göre openssl eksik. Daha sonra eklemenin kolay bir yolu var mı, yoksa PHP'mi mevcut yapılandırma seçenekleri + --with-openssl ile yeniden derlemem gerekiyor mu?
Mico

1
Zaten çalışan bir projeyi bir hazırlık sunucusuna taşırken bu boş ekran sorununu yaşıyordum. Bununla hiçbir yere varamadım, sonra @ the-shift-exchange'in önerisiyle aynı şeyi yapmaya ve Laravel'in yeni bir kurulumunu oluşturmaya karar verdim, sonra sorunu oldukça hızlı buldum; hazırlık sunucusu PHP'nin eski bir sürümünü çalıştırıyordu. Laravel, en az PHP v5.4.0 gerektirir. Başkalarının da aynı sorunu yaşaması durumunda bundan söz edeceğimi düşündüm.
igneosaur

Bellek sınırına ulaşılmadığını kontrol edin - bu daha önce Laravel 4'te WSOD'a neden oldu
Smith

Yalnızca başka bir veri noktası - Web dosyalarını bağlamak için NFS kullanarak Kubernetes'e dağıtılan bir uygulamada buna ulaştım. Çok yavaş NFS performansı nedeniyle, Laravel'in görüşleri makul bir süre içinde önbelleğe alamadığı görüldü. PHP-FPM boş bir yanıt döndürüyordu. Tüm görünümleri manuel olarak kaldırıp yeniden önbelleğe alarak düzeltildi.
Joe Niland

Yanıtlar:


222

Apaçi

Bu cevap durumunuzu açıklıyor mu yoksa yardımcı oluyor mu? Apache 2.4'e yükseltme, Apache yapılandırmasında bazı değişikliklerle birlikte gelir.

laravel

Laravel'in günlüklerini veya Apache'nin günlüklerini mi kontrol ediyorsunuz?

Laravel 4.1'e yükselttiğimden beri, uygulama günlük konumuna yazamadığında beyaz ekran "hataları" (WSOD) yaşadım. Bunu her zaman app / storage dizinini Apache tarafından yazılabilir hale getirerek çözdüm (ya grup "www-data", "apache" ya da herkes tarafından yazılabilir - bu, sunucu kurulumunuza bağlıdır.

Web Sunucusu Kullanıcısı

Ubuntu / Debian sunucularında, PHP'niz kullanıcı "www-verisi" olarak çalışıyor olabilir. CentOS / RedHat / Fedora sunucularında, PHP kullanıcı "apache" olarak çalışıyor olabilir.

Dosyalarınızın PHP çalıştıran kullanıcıya ait olduğundan emin olun:

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

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

Kullanıcı www verisi veya apache olarak çalışmayabileceğinizi unutmayın. Barındırma ve kurulumunuza bağlıdır!

Laravel 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 dahil)

# 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
Bir izin sorunu gibi görünüyor. laravel dizini chmodding onu çalıştırdı.
Mico

3
@fideloper Bu cevap gerçekten günümü kurtardı. WSOD alınıyordu ve herhangi bir yerde günlüklerde hiçbir şey görünmüyordu. chmodding uygulama / depolamayı halletti. Sanal şapkamı sana devrediyorum!
Tim Habersack

Evet, beni gerçekten kurtardığın için teşekkürler. Bir X-pad alıyordum: http yanıtımda tarayıcı hatasından kaçının ve bunun olduğunu düşündüm
Simon Bennett

4
Depolama klasörüne ilişkin izin bu tür sorunumu çözdü. Fakat laravel neden tarayıcıda izin sorunu göstermiyor?
Musa

4
Bu benim için de sorunu çözdü .... bunu kendi başıma asla bulamazdım. "Beyaz ölüm ekranı" yerine bir tür hata mesajı görüntülenmesinin en iyisi olacağını kabul ediyorum.
dusty909

65

Destek geliştiricinin Laravel 5 ve yeni dosya yapısı için cevabına yönelik bir güncelleme şu şekildedir:

$ sudo chmod -R o+w storage/

Kudos! Ubuntu 14.04 sunucusunda L5 sorunumu çözdüm.
Dylan Pierce

Benim için de Mac OS X 10.10.3'te çalıştı
dave

Benim için çalıştı - CentOS 6.8 (Final)
Mike

26

Bunu public / index.php sayfasında deneyin

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

Aslında ihtiyacım olan buydu çünkü sunucu çalışmasında (Plesk) herhangi bir nedenle hata günlüğüne ve laravel günlüğüne hiçbir şey kaydetmiyordu, bunu eklemek aslında boşluğuma neden olan eksik bir dosya olduğunu gösterdi. 500 ekran, çok teşekkürler!
Sam

Ayrıca beyaz ekranım vardı ve hiç hata yapmadım. Tüm izinler ve her şey mükemmeldi. Bu cevap aslında neler olduğunu görmeme yardımcı oldu. Teşekkürler.
SI

dünden beri bu sorunu karıştırdı. Benim durumumda klasörlerin izninin ötesinde bu kontrol, sunucunun satıcı klasörünün içindeki tüm klasörleri çıkarmadığı bildirildi!? Ne gizem ... Gerçekten iyi bir yaklaşım. Düşük erişimi olmayan genel sunucular için kullanışlıdır.
CodeToLife

26

Aşağıdaki adımlar Laravel 5'imdeki boş beyaz ekran sorununu çözdü.

  • Laravel kök klasörünüze gidin
  • bootstrap/cacheVe storagedizinlere yazma izni verin

sudo chmod -R 777 önyükleme / önbellek depolama

  • Adını değiştirmek .env.example için.env
  • Laravel kökünden terminal / komut isteminde aşağıdaki komutla uygulama anahtarını oluşturun:

php artisan anahtarı: oluştur

Bu, şifreleme anahtarını oluşturacak ve in değerini güncelleyecektir APP_KEY..env dosya

Bu sorunu çözmelidir.

Sorun devam ederse, config/app.phpyukarıdaki özel anahtar oluşturma komutundan oluşturulan yeni anahtarla güncelleyin :

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

için

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


10

Depolamayı hataları görüntülemek için erişilebilir hale getirdikten sonra bile boş sayfa alan herkes, en azından ne olduğunu görmek için bu iki satırı public / index.php'nin ilk satırlarına koyun. benim için bu hata vardı: 'PDO' sınıfı /var/www/***/config/database.php satır 16'da bulunamadı

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

6

Linux'ta yeniyken bu hatayı genellikle Laravel Projemde buldum. Beyaz hatalar hata anlamına gelir, bazı izin sorunları veya hataları olabilir.

Sadece iki adımı takip etmelisin ve şampiyon gibi çalışacaksın :)

(1) İzin verin. Bu komutu projenizin kök dizininden çalıştırın

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

(2) Projeyi klonladıysanız veya github'dan çıkardıysanız çalıştırın

composer install

(3) .env dosyanızı doğru şekilde yapılandırın ve projeniz çalışacaktır.


Kurulumumda Adım (2) eksikti. Dizinde kutudan çıktığı gibi çalışması için gerekli tüm dosyaların bulunduğunu düşünerek projeyi klonladım. Hâlâ sorun yaşadım ama bu çok önemli bir adımdı.
Jonathan Hickman

5

Bir CentOS sunucusunda benzer bir sorunla uğraşıyordum. Php artisan serv'i kullanmak ve yerel makinede 8000 numaralı bağlantı noktasından erişmek iyi çalıştı, ancak uzak makinelerimin belirli bir görünümü yüklemesini sağlayamadı. Dizeleri iyi döndürebiliyordum ve bazı görünümler yükleniyordu. Bir SELinux sorunu olduğunu nihayet fark etmeden önce kuyruğumu bir süre izinler konusunda takip ettim. Ben sadece uygulayıcıdan izin vericiye ayarladım ve işe yaradı. Umarım bu, aynı sorunla karşılaşan başka birine yardımcı olur.

setenforce permissive

Bu bana her seferinde yardımcı oldu
Umair Hamid

5

Ayrıca boş sayfa sorununun neden olabileceği bir seçeneğim daha var. Üretim modundaysanız ve yapılandırma dosyalarınızı php artisan (yapılandırma: önbellek) ile önbelleğe aldıysanız, önbellek dosyasını çalıştırarak silmeyi deneyin:

php artisan config:clear

veya manuel olarak silin (bootstrap / cache / config.php)


1
Her şeyi denedim ve bu benim için çalışan son şeydi.
DavidHyogo

Env dosyamın geçersiz olduğu ortaya çıktı, bu komutu çalıştırdığımda bana haber ver.
SvEnjoyPro

4

Bu komutu çalıştırmak benim için çözdü:

php artisan view:clear

Sanırım boş bir hata sayfası nasıl önbelleğe alındı. Önbellekleri temizlemek zorunda kaldı.


4

Benim durumumda, yükledim laravel birçok kez ve klasör yazma izninin doğru şekilde verildiğinden eminim.

Yukarıdaki cevapların çoğu gibi:

sudo chmod 777 -R storage bootstrap

Hata şu ki, nginx yapılandırmam resmi belgelerden geliyor .

Alan adını yalnızca kopyaladıktan sonra değiştirdim , sonra boş bir sayfa aldım. Yeniden başlatmayı denedim nginxvephp-fpm benim için çalışmalarını değil.

Son olarak sorunu çözmek için bu hat konfigürasyonunu ekledim.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Umarım başkalarına yardım edebilirim.


1
Bu konu yüzünden bütün bir günümü kaybettim. Sonunda beni kurtaran cevap bu. Keşke size bir oylamadan fazlasını verebilseydim. Teşekkür ederim!
Miles

3

Laravel 5.8'de boş ekrana bakma. 777 hakları verilen hem depolama hem de önyükleme klasöründe her şey yolunda görünüyor. üzerinde

php artisan cache:clear

O sorun gösterir Beyaz boşluklar içinde .env App Adı dosyası



1

WSOD'ye neden olabilecek başka bir şey de, aşağıdaki gibi 'return' anahtar sözcüğünün eksik olmasıdır:

return View::make('yourview');

aksine

View::make('yourview');


1

Bazen bunun nedeni laravel 5.1'in PHP> = 5.5.9 gerektirmesidir. Php'yi güncellemek sorunu çözecektir.


1

Benim için garip, ancak benim durumumda sorunu çözmek için laravel'in önbelleğini temizlemem gerekiyordu.


1

Ben de yaptıktan sonra aynı sorunla karşılaştım composer update

Ben composer required monolog/monologde yüklemeyi denedim ama işe yaramadı.

Sonra / vendor dizinini kaldırdım ve composer installnormal şekilde çalıştım ve çalıştım.

temelde monologumu ve diğer kararlı paketler versiyonumu önceki haline döndürmüş olmalı. yapmamak çok daha iyicomposer update

hem / vendor klasörlerini karşılaştırdığımda fark ettim ve composer güncellendikten sonra classesaltındaki bu dosyaların /vendor/monolog/monolog/src/Handlereksik olduğunu gördüm .


1

Hatasız boş ekranın arkasında birçok neden olabilir. Laravel projesini paylaşımlı hosting'e yüklemek istediğimde bu problemle birçok kez karşılaştım.

Neden: Yanlış PHP Sürümü

Benim durumumda, sorun yanlış php sürümünden kaynaklanıyordu. Yerel bilgisayarda php 7.1 sürümüm vardı, paylaşılan barındırma cpanel'de olduğu gibi, php 5.6 sürümü vardı. 5.6 sürümünden 7.1 sürümüne geçmek benim için çalıştı.

Cpanel'deki php sürümünü cpanel ana sayfasında bulunan multiphp yöneticisinden değiştirebilirsiniz.


1

Bazen route.php dosyasında sahip olabilirsiniz

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

daha önce yazılmış

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

Controller::show()Denetleyicinizi sıfırdan geliştirmeye başladığınızda boş bir yöntem olabilir . Bu durumda /addurl isterken boş boş sayfa alacaksınız . Bu, istek tarafından ele alındığı için olur/{id} rota ve yöntemi hiçbir şey döndürmediği için olur.

Daha /addönce rota yerleştirmeyi deneyin/{id}


0

Aynı davranışa sahip diğer bir sorun Laravel 3'ü PHP 5.5.x ile kullanmaktır. Php 5.5'te ayrılmış bir kelime olduğu için bazı laravel işlevinin "verim () adını değiştirmeniz gerekir.


0

Sebep, Middlewareaşağıdaki kodu handleişlevin sonuna koymayı unutmanız olabilir

return $next($request);

0

Laravel + Ubuntu 14.04'e ilk başladığımda da aynı hatayı alıyordum. Önyükleme ve depolama klasörüne sağ tıklıyorum >>> özellikler >>> izin >> Diğerleri Erişim >>> "Dosya oluştur ve sil" olarak değiştir kapalı dosyalar için izin

teşekkür ederim


0

Bunu Laravel forumlarından aldınız, ancak yakın zamanda Laravel sürümlerini VE PHP sürümlerini yükselttiyseniz VE nginx çalıştırıyorsanız, nginx yapılandırma dosyanızı yeni PHP sürümünü yansıtacak şekilde değiştirdiğinizden emin olun. Örneğin:

Nginx site yapılandırma dosyanızda (burada: / etc / nginx / sites-available), değiştirin

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

için

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


0

Bende de aynı sorun var Depolama klasörü için chmod klasörünü zaten değiştirdim. veritabanı ayarlarını .env olarak doldurun, ancak sorunu çözmedi. Laravel 5.5 kullandım ve PHP 5.6 kullandım, düzeltmek için gittim (cpanel-> PHP Selector) ve PHP 7.1'e geçtim ve sorun bitti.


0

Normal durumlarda hatalar günlüğe kaydedilmelidir sürece

Komut dosyası günlük dosyasına yazılamıyor

  • yolunu kontrol et
  • izinler

Veya Appache gibi daha yüksek seviye kontrol uygulama sunucusu günlüklerinde hata oluştu || nginx

Veya PHP ini ayarları gibi kaynak sınırları

memory_limit
max_input_time
max_execution_time

Veya işletim sistemi sınırı vb.


0

Depolama ve önbellek klasöründeki İzin sorunları ve php sürümü sorunlarına ek olarak, herhangi bir hata mesajı olmadan boş sayfa göstermenin başka nedenleri olabilir.

Örneğin, herhangi bir günlük olmadan ve boş beyaz sayfayla yeniden bildirilen bir hata mesajı aldım . Kendi yardımcı işlevim ile bir satıcı işlevi arasında bir çelişki vardı.

Başlangıç ​​noktası olarak artisankomutları çalıştırmanızı öneririm . Örneğin:

php artisan cache:clear

Bir sorun varsa, terminalde sorulacaktır ve bir Clue'unuz var ve çözüm için google'a gidebilirsiniz.


0

Laravel uygulamanız çok fazla bilgi görüntülemeye çalıştığında ve PHP sınırları devreye girdiğinde (örneğin tek bir sayfada on binlerce veritabanı kaydı görüntülendiğinde) boş ekran da olur. En kötü yanı, Laravel günlüklerinde herhangi bir hata görmeyeceksiniz. Muhtemelen PHP FPM günlüklerinde de herhangi bir hata görmeyeceksiniz. Http sunucusu günlüklerinizde hatalar bulabilirsiniz, örneğin nginx aşağıdaki gibi bir şey atarFastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted .

Kısa ipucu: Sorgu nesnenizde sınırınızın ->limit(1000)nerede 1000olduğunu ekleyin.


0

Vagrant Homestead kullanarak yerel geliştirmeden yükleyerek sunucumda bir Laravel 5.8 uygulamasını çalıştırmayı denediğimde bu sorunu çözdüm. Bir süre sonra, çalıştırdığım canlı sunucudaki dev alt etki alanının bir şekilde PHP 5.6 olarak ayarlandığını anladım.

cPanel> MultiPHP Yöneticisi> PHP 7.2'ye Ayarla

bunu benim için düzeltti. Umarım bu birine yardımcı olabilir.


0

çözmek için bu .htaccess'i kullanın

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

benim durumumda, BLANK WHITE SCREEN sorunu env dosyasında bir yazım hatası veya yanlış karakter kadar basitti. Socialite'i uyguluyordum, bu yüzden Google+ için .env kimlik bilgilerini şu şekilde oluştururken:

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

Ancak .env dosyası '+' işaretini kullanamaz, bu yüzden bu düzeltmeyi yapmam gerekiyor:

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

Umarım bu aptalca bir hata bulmanıza yardımcı olur ...


-2

Benim durumumda, apache'yi yeniden başlatmak sorunu çözdü. Ubuntu / Debian için:

sudo service apache2 restart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.