it-swarm.com.de

Laravel leeren weißen Bildschirm

Meine Laravel-Site hat zuvor funktioniert, ich habe kürzlich ein Upgrade auf Apache 2.4 und PHP 5.5.7 durchgeführt.

Jetzt bekomme ich einen weißen leeren Bildschirm, wenn ich zu laravel.mydomain.com gehe. Nichts in Apache-Fehlerprotokollen, Routen usw. sollte in Ordnung sein, da es zuvor funktioniert hat.

.htaccess wird geladen, da ich eine 500 bekomme, wenn ich eine ungültige Zeile in /var/sites/laravel/public/.htaccess einfügen.

Hier ist mein Zugang:

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

Hier ist meine virtuelle Host-Direktive:

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>

Und 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
99
Mico

Apache

Beschreibt diese Antwort Ihre Situation? Beim Upgrade auf Apache 2.4 wurden einige Änderungen an der Apache-Konfiguration vorgenommen. 

Laravel

Überprüfen Sie die Protokolle von Laravel oder die Protokolle von Apache?

Seit dem Upgrade auf Laravel 4.1 gab es White-Screen-Fehler (WSOD), wenn die Anwendung nicht in den Protokollspeicherort schreiben konnte. Ich habe dieses Problem immer gelöst, indem das App-/Speicherverzeichnis von Apache beschreibbar gemacht wurde (entweder in die Gruppe "www-data", "Apache" oder in die Welt beschreibbar).

Webserver-Benutzer

Auf Ubuntu/Debian-Servern wird Ihr PHP möglicherweise als Benutzer "www-data" ausgeführt. Auf CentOS/RedHat/Fedora-Servern können Sie PHP als Benutzer "Apache" ausgeführt werden.

Stellen Sie sicher, dass Ihre Dateien dem Benutzer gehören, der PHP ausführt:

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

# CentOS/RedHat/Fedora
$ Sudo chown -R Apache /path/to/laravel/files

Beachten Sie, dass Sie möglicherweise nicht als Benutzer www-data oder Apache ausgeführt werden. Das hängt von Ihrem Hosting und Setup ab!

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

# 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

Eine Aktualisierung der Antwort von fideloper für Laravel 5 und seiner neuen Dateistruktur lautet:

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

Die folgenden Schritte lösten das Problem mit dem leeren weißen Bildschirm auf meinem Laravel 5.

  • Gehen Sie zu Ihrem Laravel Stammordner
  • Erteilen Sie die Schreibberechtigung für die Verzeichnisse bootstrap/cache Und storage

Sudo chmod -R 777 Bootstrap/Cache-Speicher

  • Benenne .env.example In .env Um
  • Generieren Sie den Anwendungsschlüssel mit dem folgenden Befehl in terminal/command-Prompt von Laravel root:

pHP Handwerker Schlüssel: generieren

Dadurch wird der Verschlüsselungsschlüssel generiert und der Wert von APP_KEY In der Datei .env Aktualisiert

Dies sollte das Problem lösen.

Wenn das Problem weiterhin besteht, aktualisieren Sie config/app.php Mit dem neuen Schlüssel, der mit dem oben genannten Befehl zum Generieren von handwerklichen Schlüsseln generiert wurde:

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

zu

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

23

Versuchen Sie es auf der Seite public/index.php

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

für alle, die eine leere Seite erhalten, nachdem der Speicher für die Anzeige von Fehlern zugänglich gemacht wurde, setzen Sie diese beiden Zeilen in die ersten Zeilen von public/index.php, um zu sehen, was mindestens passiert. für mich war dieser Fehler da: Die Klasse 'PDO' wurde in /var/www/***/config/database.php in Zeile 16 nicht gefunden 

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

Als ich neu in Linux war, fand ich diesen Fehler normalerweise in meinem Laravel-Projekt. Weiße Fehler bedeuten Fehler. Möglicherweise gibt es ein Problem mit der Berechtigung oder einen Fehler.

Sie müssen nur zwei Schritte befolgen und werden wie ein Champion arbeiten :)

(1) Erteilen Sie die Erlaubnis. Führen Sie diese Befehle im Stammverzeichnis Ihres Projekts aus

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

(2) Wenn Sie das Projekt geklont oder aus Github gezogen haben, führen Sie es aus

composer install

(3) Konfigurieren Sie Ihre .env-Datei ordnungsgemäß und Ihr Projekt wird funktionieren.

5
Vikash

Ich hatte Probleme mit einem ähnlichen Problem auf einem CentOS-Server. Die Verwendung von php artisan serv und der Zugriff auf Port 8000 auf dem lokalen Computer funktionierte einwandfrei, konnte jedoch nicht dazu führen, dass meine Remote-Computer eine bestimmte Ansicht laden. Ich konnte Strings zurückgeben, und einige Ansichten wurden geladen. Ich verfolgte meinen Schwanz eine Weile, bevor ich endlich merkte, dass es sich um eine SELinux-Ausgabe handelte. Ich habe es nur von erzwungen zu permissiv gesetzt und es hat funktioniert. Hoffe, das hilft jemandem da draußen, der möglicherweise das gleiche Problem hat. 

setenforce permissive
4
Kamkat86

In meinem Fall habe ich laravel mehrmals installiert, und ich bin sicher, dass die Schreibberechtigung für den Ordner richtig erteilt wurde.

Wie die meisten Antworten oben:

Sudo chmod 777 -R storage bootstrap

Der Fehler ist, dass meine Nginx-Konfiguration aus der offiziellen Dokumentation stammt.

Ich habe nur den Domainnamen nach dem Kopieren geändert, dann bekam ich eine leere Seite ... Ich versuchte, nginx und php-fpm neu zu starten, arbeitete aber nicht für mich.

Schließlich habe ich diese Leitungskonfiguration hinzugefügt, um das Problem zu lösen.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Ich hoffe ich kann anderen helfen.

2
qskane

Ich hatte auch das gleiche Problem, nachdem ich composer update

Ich habe auch versucht, composer required monolog/monolog zu installieren, funktionierte aber nicht.

Dann entfernte ich das Verzeichnis/vendor und lief composer install und arbeitete wie gewohnt.  

im Grunde muss es meine Version von Monolog und anderen stabilen Paketen auf die vorherige Version zurückgesetzt haben. also besser nicht composer update

was ich beim Vergleichen der beiden Ordner/Vendor bemerkte, und die classes-Dateien unter /vendor/monolog/monolog/src/Handler fehlten, waren nach der Aktualisierung des Composers nicht vorhanden.

1
Amit Shah

Seltsam für mich, aber in meinem Fall musste ich den Cache der Laravel leeren, um das Problem zu lösen.

1
antongorodezkiy

Ich habe einige Probleme, um es in einer Vagrant-Maschine einzurichten. Was für mich wirklich funktioniert, war ein:

chmod -R o+w app/storage/ 

aus dem Inneren der Vagrant-Maschine.

Referenz: https://laracasts.com/lessons/vagrant-and-laravel

1
gvsrepins

Eine andere Sache, die dazu führen kann, dass das WSOD das Schlüsselwort 'return' nicht enthält, wie in:

return View::make('yourview');

im Gegensatz zu

View::make('yourview');

1
emragins

Ich habe auch eine weitere Option, warum ein Problem mit der leeren Seite auftreten kann. Wenn Sie sich im Produktionsmodus befinden und Ihre Konfigurationsdateien von PHP-Experten (config: cache) zwischengespeichert haben, versuchen Sie, die Cache-Datei zu löschen, indem Sie Folgendes ausführen:

php artisan config:clear

oder manuell löschen (bootstrap/cache/config.php)

1
Boris Tetřev

Manchmal liegt es daran, dass für laravel 5.1 PHP> = 5.5.9 erforderlich ist. Update PHP löst das Problem.

1
Kevin

Ein anderes Problem mit demselben Verhalten ist die Verwendung von Laravel 3 mit PHP 5.5.x. Sie müssen den Namen einiger Laravel-Funktionen ändern ("yield ()"), da in PHP 5.5 ein reserviertes Word ist 

0
Hernan

Der Grund kann Middleware sein, wenn Sie vergessen, folgenden Code an das Ende der handle-Funktion zu setzen

return $next($request);
0
Farid Movsumov

Dieselbe Fehlermeldung wurde auch beim ersten Start von Laravel + Ubuntu 14.04 .__ angezeigt. Klicken Sie mit der rechten Maustaste auf den Bootstrap- und Speicherordner >>> Eigenschaften >>> Berechtigung Dateien "Berechtigung für eingeschlossene Dateien ändern 

Vielen Dank 

0
user1846871

Neben Problemen mit der Berechtigung bei Speicher- und Cache-Ordner- und PHP-Versionsproblemen kann es auch andere Gründe geben, leere Seiten ohne Fehlermeldung anzuzeigen.

Zum Beispiel hatte ich eine redeclare Fehlermeldung ohne Protokoll und mit leerer weißer Seite . Es gab einen Konflikt zwischen meiner eigenen Hilfsfunktion und einer Herstellerfunktion.

Ich empfehle als einen Ausgangspunkt , artisan-Befehle auszuführen. zum Beispiel:

php artisan cache:clear

Wenn ein Problem aufgetreten ist, wird dies im Terminal angezeigt, und Sie haben ein Clue und Sie können für die Lösung google.

0
Khalil Laleh

Ich bin auf dieses Problem gestoßen, als ich versucht habe, eine Laravel 5.8-App auf meinem Server auszuführen, die mithilfe von Vagrant Homestead aus der lokalen Entwicklung hochgeladen wurde. Nach einer Weile stellte ich fest, dass die dev-Unterdomäne auf dem Live-Server, den ich ausführte, irgendwie auf PHP 5.6 gesetzt war.

cPanel> MultiPHP Manager> Auf PHP 7.2 setzen

habe das für mich behoben. Hoffe das könnte jemandem helfen.

0
Inigo

Es kann viele Gründe für den fehlerfreien Bildschirm geben. Ich war schon oft mit diesem Problem konfrontiert, wenn ich ein laravel -Projekt in Shared Hosting hochladen möchte.

Grund: Falsche PHP Version

In meinem Fall lag das Problem an einer falschen PHP-Version. Ich hatte PHP 7.1-Version in lokalen Computer, wo wie in Shared Hosting-Panel, gab es PHP 5.6-Version. Das Hochrüsten der Version von 5.6 auf 7.1 hat bei mir funktioniert.

Sie können die PHP-Version in cpanel über den auf der cpanel-Homepage verfügbaren Multiphp-Manager ändern.

0
Sagar Gautam

benutze diese .htaccess um zu lösen

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

Das Ausführen dieses Befehls löste es für mich:

php artisan view:clear

Ich denke, eine leere Fehlerseite war wie zwischengespeichert. Musste die Caches löschen.

0
Andrew

Leere Bildschirme treten auch auf, wenn Ihre Laravel-App versucht, zu viele Informationen anzuzeigen, und PHP den Startschuss begrenzt (z. B. Zehntausende von Datenbankdatensätzen auf einer einzigen Seite). Das Schlimmste ist, dass Sie keine Fehler in den Laravel-Protokollen sehen. In den FPM-Protokollen PHP werden wahrscheinlich auch keine Fehler angezeigt. In Ihren http-Serverprotokollen finden Sie möglicherweise Fehler. Beispielsweise löst nginx etwas wie FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted aus.

Kurzer Tipp: Fügen Sie für Ihr Abfrageobjekt ->limit(1000) hinzu, wobei 1000 Ihr Limit ist.

0
f055

Haben Sie dies aus den Laravel-Foren erhalten, aber wenn Sie kürzlich die Laravel-Versionen UND PHP aktualisiert UND Nginx ausgeführt haben, stellen Sie sicher, dass Sie Ihre Nginx-Konfigurationsdatei so geändert haben, dass sie der neuen PHP -Version entspricht. Zum Beispiel:

Ändern Sie in Ihrer Nginx-Site-Konfigurationsdatei (hier:/etc/nginx/sites-available)

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

zu

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

0
Ben Wilson

Ich habe das gleiche Problem. Ich ändere bereits den chmod-Ordner für den Speicherordner. Datenbankeinstellungen in .env füllen, aber das Problem nicht behoben ... Ich habe Laravel 5.5 verwendet und PHP 5.6 verwendet, um das Problem zu beheben, ging ich zu (cpanel-> PHP Selector) und änderte zu PHP 7.1 Und das Problem ist erledigt.

0
Abed Putra

in meinem Fall war das Problem mit dem BLANK WHITE SCREEN so einfach wie ein Tippfehler oder ein falsches Zeichen in der env-Datei. Ich habe socialite implementiert. Als ich also die .env-Anmeldeinformationen für Google+ eingerichtet habe, sah das so aus:

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

Da die .env-Datei das Pluszeichen nicht verwenden kann, muss folgende Korrektur vorgenommen werden:

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

Ich hoffe das hilft dir einen blöden Fehler zu finden ...

0
Absolutkarlos

Vor dem leeren Bildschirm in Laravel 5.8. Alles scheint in Ordnung zu sein, sowohl mit Speicher als auch mit dem bootstrap -Ordner, dem 777 Rechte zugewiesen wurden. Auf

php artisan cache:clear

Es zeigt das Problem, dass es sich um die Leerzeichen in App-Name von .env -Datei handelte

0
saad

Im Normalfall sollten Fehler protokolliert werden Sofern nicht

Skript kann nicht in die Protokolldatei schreiben

  • Überprüfen Sie den Pfad
  • berechtigungen

Oder es ist ein Fehler in den Check-Serverprotokollen auf höherer Ebene wie Appache || aufgetreten Nginx

Oder es gibt Ressourcengrenzen Wie PHP Ini-Einstellungen

memory_limit
max_input_time
max_execution_time

Oder OS-Limits und so weiter 

0
Bdwey