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
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.
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.
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!
# 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
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/
Essayez ceci dans la page public/index.php
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
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);
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.
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
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.
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.
Étrange pour moi, mais dans mon cas, j'ai dû vider le cache du laravel pour résoudre le problème.
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
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)
Parfois c'est parce que laravel 5.1 nécessite PHP> = 5.5.9. Mise à jour php va résoudre le problème.
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
La raison peut être Middleware
si vous oubliez de mettre le code suivant à la fin de la fonction handle
return $next($request);
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
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.
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.
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.
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>
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.
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)
où 1000
est votre limite pour votre objet de requête.
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;
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.
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 ...
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
Dans des cas normaux, les erreurs doivent être consignées Sauf si
Le script ne peut pas écrire dans le fichier journal
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