web-dev-qa-db-fra.com

Laravel écran blanc vierge

Mon site laravel fonctionnait auparavant, j'ai récemment effectué une mise à 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 Apache, les itinéraires, etc. ne devrait fonctionner normalement.

.htaccess est en cours de chargement car je reçois un 500 lorsque j'insère une ligne invalide dans /var/sites/laravel/public/.htaccess.

Voici mon .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]

Voici la directive de mon hôte virtuel:

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>

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

Apache

Est-ce que cette réponse décrit ou aide votre situation? La mise à niveau vers Apache 2.4 entraîne quelques modifications dans 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, des «erreurs» d'écran blanc (WSOD) se sont produites lorsque l'application n'a pas pu écrire à l'emplacement du journal. J'ai toujours résolu ce problème en rendant le répertoire app/storage accessible en écriture à Apache (le groupe pouvant être écrit en écriture sur "www-data", "Apache" ou le monde en écriture), cela dépend de la configuration de votre serveur.

Utilisateur du serveur Web

Sur les serveurs Ubuntu/Debian, votre PHP peut s'exécuter en tant qu'utilisateur "www-data". Sur les serveurs CentOS/RedHat/Fedora, vous 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
215
fideloper

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

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

Essayez ceci dans la page public/index.php

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

pour tous ceux qui obtiennent une page vierge même après avoir rendu le stockage accessible pour l'affichage des erreurs, mettez ces deux lignes en première ligne de public/index.php pour voir au moins ce qui se passe. pour moi cette erreur était là: la classe 'PDO' est introuvable dans /var/www/***/config/database.php à la ligne 16 

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

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

Il suffit de suivre deux étapes et fonctionnera 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 extrait de github, lancez

composer install

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

5
Vikash

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 a bien fonctionné, mais mes machines distantes n'ont pas pu charger une vue particulière. Je pouvais bien retourner les cordes et certaines vues étaient en cours de chargement. J'ai poursuivi pendant longtemps avant de me rendre compte qu'il s'agissait d'un problème lié à SELinux. Je viens de passer de forcer à permissive et cela a fonctionné. J'espère que cela aidera quelqu'un d'autre qui pourrait être confronté au même problème. 

setenforce permissive
4
Kamkat86

Dans mon cas, j’ai installé laravel plusieurs fois et je suis sûr que l’autorisation d’écriture du dossier a été correctement donnée.

Comme la plupart des réponses ci-dessus:

Sudo chmod 777 -R storage bootstrap

L'erreur est que ma configuration nginx provient de la documentation officielle .

J'ai seulement modifié le nom de domaine après avoir copié puis j'ai obtenu une page vierge . J'ai essayé de redémarrer nginx et php-fpm, mais je ne travaillais pas.

Enfin, j'ai ajouté cette configuration de ligne pour résoudre le problème.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

J'espère pouvoir aider les autres.

2
qskane

J'ai également rencontré le même problème après avoir fait composer update

J'ai aussi essayé d'installer composer required monolog/monolog mais je n'ai pas fonctionné.

Ensuite, j'ai supprimé le répertoire/vendor et lancé composer install et travaillé normalement.  

fondamentalement, il doit avoir rétabli mon précédent et la version de mon paquet stable à la version précédente. alors mieux vaut ne pas composer update

ce que j’ai remarqué en comparant les dossiers/vendor et trouvé ces fichiers classes sous /vendor/monolog/monolog/src/Handler étaient manquants après la mise à jour du compositeur.

1
Amit Shah

Étrange pour moi, mais dans mon cas, j'ai dû vider le cache du laravel pour résoudre le problème.

1
antongorodezkiy

J'ai quelques problèmes pour l'installer dans une machine à vagabond. Ce qui fonctionne vraiment pour moi était d'exécuter un:

chmod -R o+w app/storage/ 

de l'intérieur de la machine à vagabond.

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

1
gvsrepins

J'ai aussi une autre option pour laquelle un problème de page vierge peut se produire. Si vous êtes en mode production et si vous avez mis en cache vos fichiers de configuration avec php artisan (config: cache), essayez de supprimer le fichier cache en exécutant:

php artisan config:clear

ou supprimez-le manuellement (bootstrap/cache/config.php)

1
Boris Tetřev

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

1
Kevin

Autre problème avec le même comportement, utilisez Laravel 3 avec PHP 5.5.x. Vous devez changer le nom de la fonction laravel "yield () car c'est un mot réservé en php 5.5 

0
Hernan

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

return $next($request);
0
Farid Movsumov

La même erreur se produisait lorsque je démarrais pour la première fois sur laravel + Ubuntu 14.04 Je clique avec le bouton droit de la souris sur le répertoire de démarrage et de stockage >>> propriétés >>> permission >> Autres accès >>> changez-le en "Créer et supprimer fichiers "Modifier l'autorisation pour les fichiers joints 

Je vous remercie 

0
user1846871

En plus des problèmes d’autorisation dans les dossiers de stockage et de cache et de version php, il peut y avoir une autre raison d’afficher une page vierge sans message d’erreur.

Par exemple, j'avais un message d'erreur redeclare sans 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 un point de départ, exécuter 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 aurez un Clue et vous pourrez chercher sur Google la solution.

0
Khalil Laleh

J'ai rencontré ce problème lorsque j'ai essayé de lancer une application Laravel 5.8 sur mon serveur, en le téléchargeant à partir du développement local à l'aide de Vagrant Homestead. Après un moment, j'ai compris que le sous-domaine dev sur le serveur en direct que j'exécutais était en quelque sorte défini sur PHP 5.6.

cPanel> MultiPHP Manager> Régler sur PHP 7.2

résolu cela pour moi. J'espère que cela pourrait aider quelqu'un.

0
Inigo

Il peut y avoir beaucoup de raisons derrière l'écran blanc sans erreurs. J'ai fait face à ce problème à plusieurs reprises chaque fois que je souhaitais téléverser un projet laravel dans un hébergement partagé.

Raison: Incorrect PHP Version

Dans mon cas, le problème était dû à une version php incorrecte. J'ai eu la version 7.1 de php dans l'ordinateur local où comme dans l'hébergement partagé cpanel, il y avait la version de PHP 5.6. Passer de la version 5.6 à la version 7.1 a fonctionné pour moi.

Vous pouvez changer la version de php dans cpanel à partir du gestionnaire multiphp disponible dans la page d'accueil de cpanel.

0
Sagar Gautam

utiliser ceci .htaccess pour résoudre

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

Exécuter cette commande l'a résolu pour moi:

php artisan view:clear

J'imagine qu'une page d'erreur vierge correspondait à la mise en cache. J'ai dû vider les caches.

0
Andrew

Un écran vide apparaît également lorsque votre application Laravel essaie d'afficher trop d'informations et que les limites PHP entrent en jeu (par exemple, l'affichage de dizaines de milliers d'enregistrements de base de données sur une seule page). Le pire est que vous ne verrez aucune erreur dans les journaux de Laravel. Vous ne verrez probablement aucune erreur dans les journaux FPM PHP. Vous pourriez trouver des erreurs dans les journaux de votre serveur http, par exemple nginx renvoie quelque chose comme FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted.

Astuce: ajoutez ->limit(1000)1000 est votre limite pour votre objet de requête.

0
f055

Ceci a été obtenu sur les forums Laravel, mais si vous avez récemment mis à niveau les versions de Laravel ET les versions PHP ET exécutant nginx, assurez-vous d'avoir modifié votre fichier de configuration nginx pour refléter la nouvelle version PHP. Par exemple:

Dans le fichier de configuration de votre 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;

0
Ben Wilson

J'ai le même problème. Je change déjà le dossier chmod pour le dossier de stockage. remplir les paramètres de base de données dans .env, mais ne résout pas le problème . J'ai utilisé Laravel 5.5 et j'ai utilisé PHP 5.6, pour le corriger, je suis allé dans (cpanel-> PHP Selector) et j'ai to PHP 7.1 Et le problème est résolu.

0
Abed Putra

dans mon cas, le problème BLANK WHITE SCREEN était aussi simple qu’une faute de frappe ou un caractère erroné dans le fichier env. J'étais en train d'implémenter socialite, donc quand j'ai configuré les informations d'identification .env pour Google+, comme ceci:

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

Mais, le fichier .env ne peut pas utiliser le signe '+', je dois donc apporter cette correction:

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

J'espère que cela vous aidera à trouver une erreur stupide ...

0
Absolutkarlos

Face à l'écran vide dans Laravel 5.8. Tout semble aller pour le stockage et le dossier bootstrap avec 777 droits. Sur

php artisan cache:clear

Il montre le problème que c'était le espaces blancs dans nom de l'application de .env fichier

0
saad

Dans des cas normaux, les erreurs doivent être consignées Sauf si

Le script ne peut pas écrire dans le fichier journal

  • vérifier son chemin
  • autorisations

Ou une erreur s'est produite dans les journaux de serveur d'applications de contrôle de niveau supérieur, tels qu'Appache || Nginx

Ou ce sont les limites de ressources Comme PHP paramètres ini

memory_limit
max_input_time
max_execution_time

Ou limite de l'OS et ainsi de suite 

0
Bdwey