Écran blanc vide de Laravel

Mon site laravel fonctionnait auparavant, j’ai récemment mis à niveau vers Apache 2.4 et PHP 5.5.7.

Maintenant, je reçois un écran blanc lorsque je vais sur laravel.mydomain.com, rien dans les journaux d’erreur, les routes et etc. d’Apache ne devrait convenir.

.htaccess se charge à mesure que j’obtiens un 500 lorsque j’insère une ligne non valide dans /var/sites/laravel/public/.htaccess.

Heres mon .htaccess:

$ cat /var/sites/laravel/public/.htaccess   Options -MultiViews  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] 

Voici la directive de mon hôte virtuel:

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

Et 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

Cette réponse décrit-elle ou aide-t-elle votre situation? La mise à niveau vers Apache 2.4 s’accompagne de modifications de la configuration d’Apache.

Laravel

Vérifiez-vous les journaux de Laravel ou les journaux d’Apache?

Depuis la mise à niveau vers Laravel 4.1, j’ai eu des “erreurs” d’écran blanc (WSOD) lorsque l’application n’a pas pu écrire sur l’emplacement du journal. J’ai toujours résolu ce problème en rendant le répertoire app / storage accessible en écriture par Apache (soit un groupe accessible en écriture à “www-data”, soit “apache”, soit accessible en écriture – cela dépend de la configuration de votre serveur.

Utilisateur du serveur Web

Sur les serveurs Ubuntu / Debian, votre PHP peut être exécuté en tant qu’utilisateur “www-data”. Sur les serveurs CentOS / RedHat / Fedora, PHP peut être exécuté en tant qu’utilisateur “apache”.

Assurez-vous que vos fichiers appartiennent à l’utilisateur qui exécute PHP:

 # Debian/Ubuntu $ sudo chown -R www-data /path/to/laravel/files # CentOS/RedHat/Fedora $ sudo chown -R apache /path/to/laravel/files 

Notez que vous n’exécutez peut-être pas en tant qu’utilisateur www-data ou apache. Cela dépend de votre hébergement et de votre configuration!

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 

Une mise à jour de la réponse de fideloper pour Laravel 5 et sa nouvelle structure de fichier est la suivante:

 $ sudo chmod -R o+w storage/ 

Les étapes suivantes ont résolu le problème de l’écran blanc vide sur mon Laravel 5.

  • Allez dans votre dossier racine Laravel
  • Autoriser l’écriture sur storage répertoires bootstrap/cache et storage

sudo chmod -R 777 bootstrap / stockage de cache

  • Renommez .env.example à .env
  • Générez la clé d’application avec la commande suivante dans le terminal / invite de commande de la racine Laravel:

clé artisanale php: générer

Cela va générer la clé de chiffrement et mettre à jour la valeur de APP_KEY dans le fichier .env

Cela devrait résoudre le problème.

Si le problème persiste, alors mettez à jour config/app.php avec la nouvelle clé générée à partir de la commande de génération de clé artisan ci-dessus:

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

à

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

Essayez ceci dans la page public / index.php

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

pour quiconque obtient une page blanche même après avoir rendu le stockage accessible pour l’affichage des erreurs, placez ces deux lignes en première ligne de public / index.php pour voir ce qui se passe au moins. pour moi cette erreur était là: la classe ‘PDO’ ne se trouve pas dans /var/www/***/config/database.php sur la ligne 16

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

Quand j’étais nouveau sur Linux.J’ai généralement trouvé cette erreur avec mon projet Laravel. Les erreurs blanches signifient une erreur, il peut y avoir un problème d’autorisation ou une erreur.

Il suffit de suivre deux étapes et travaillera comme un champion 🙂

(1) Donnez la permission. Exécutez ces commandes à partir du répertoire racine de votre projet

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

(2) Si vous avez cloné le projet ou tiré de github, alors exécutez

 composer install 

(3) Configurez correctement votre fichier .env et votre projet fonctionnera.

Je me débattais avec un problème similaire sur un serveur CentOS. Utiliser php artisan serv et y accéder via le port 8000 sur la machine locale fonctionnait correctement, mais mes machines distantes ne pouvaient pas charger une vue particulière. Je pourrais bien retourner les chaînes, et certaines vues étaient en cours de chargement. J’ai poursuivi ma queue sur les permissions pendant un moment avant de réaliser que c’était un problème avec SELinux. Je viens de mettre en vigueur à permissif et cela a fonctionné. J’espère que cela aidera quelqu’un d’autre qui pourrait rencontrer le même problème.

 setenforce permissive 

J’ai quelques problèmes à régler dans une machine à vagrantage. Ce qui fonctionne vraiment pour moi a été exécuté a:

chmod -R o+w app/storage/

de l’intérieur de la machine Vagrant.

Référence: https://laracasts.com/lessons/vagrant-and-laravel

Une autre chose qui peut causer le WSOD manque le mot clé ‘return’, comme dans:

return View::make('yourview');

par opposition à

View::make('yourview');

Parfois, c’est parce que laravel 5.1 requirejs PHP> = 5.5.9. Mise à jour php va résoudre le problème.

Un autre problème avec le même comportement est l’utilisation de Laravel 3 avec PHP 5.5.x. Vous devez changer le nom de la fonction laravel “yield () car c’est un mot réservé dans php 5.5

Reason peut être un Middleware si vous oubliez de mettre le code suivant à la fin de la fonction handle

 return $next($request); 

Étrange pour moi, mais dans mon cas, j’ai dû vider le cache de Laravel pour résoudre le problème.

J’avais aussi la même erreur quand je commence la première fois sur laravel + Ubuntu 14.04 Je viens de faire un clic droit sur le bootstrap et le dossier de stockage >>> properties >>> permission >> Others Access >>> le changer pour “Create and delete files” autorisation pour les fichiers joints

Je vous remercie

Obtenu ceci depuis les forums Laravel, mais si vous avez récemment mis à niveau les versions Laravel ET PHP et que vous exécutez nginx, assurez-vous d’avoir modifié votre fichier de configuration nginx pour refléter la nouvelle version de PHP. Par exemple:

Dans votre fichier de configuration du site nginx (ici: / etc / nginx / sites-available), modifiez

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

à

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

J’ai le même problème. Je change déjà de dossier chmod pour le dossier de stockage. remplir les parameters de firebase database dans .env, mais n’a pas résolu le problème. J’ai utilisé Laravel 5.5 et j’ai utilisé PHP 5.6 pour y remédier (cpanel-> PHP Selector) et je suis passé à PHP 7.1 Et le problème est résolu.

Dans des cas normaux, les erreurs doivent être consignées à moins que

Le script ne peut pas écrire dans le fichier journal

  • vérifier son chemin
  • permissions

Ou une erreur est survenue sur les journaux de vérification du serveur d’applications de niveau supérieur, comme Appache || Nginx

Ou les limites de ressources Comme les parameters PHP ini

 memory_limit max_input_time max_execution_time 

Ou la limite OS et ainsi de suite

En plus des problèmes d’autorisation dans les dossiers de stockage et de cache et de version php, il pourrait y avoir d’autres raisons pour afficher des pages vierges sans aucun message d’erreur.

Par exemple, j’ai eu un message d’erreur de redéclare sans aucun journal et avec une page blanche vierge. Il y avait un conflit entre ma propre fonction d’assistance et une fonction de fournisseur.

Je suggère comme sharepoint départ de lancer des commandes artisan . par exemple:

 php artisan cache:clear 

S’il y avait un problème, il vous sera demandé dans le terminal et vous avez un indice et vous pouvez google pour la solution.

Dans mon cas, le redémarrage d’Apache a résolu le problème. pour Ubuntu / Debian:

 sudo service apache2 restart 

Ce changement fonctionne pour mon serveur local Ubuntu 14.xx

 # Apply all permission to the laravel 5.x site folders $ sudo chmod -R 777 mysite 

Également apporté des modifications aux parameters httpd disponibles sur le site Paramètres Apache2

Ajouter des parameters:

 Options +Indexes +FollowSymLinks +MultiViews Require all granted