Mon site laravel fonctionnait auparavant, j'ai récemment mis à niveau vers Apache 2.4 et PHP 5.5.7.
Maintenant, j'obtiens un écran blanc vide lorsque je vais sur laravel.mydomain.com, rien dans les journaux d'erreurs Apache, les routes, etc. ne devrait fonctionner comme avant.
.htaccess se charge car j'obtiens 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 ma directive d'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
Réponses:
Apache
Est -ce que cette réponse décrire ou aider votre situation? La mise à niveau vers Apache 2.4 s'accompagne de quelques changements 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, j'ai eu des "erreurs" d'écran blanc (WSOD) lorsque l'application ne pouvait pas écrire dans l'emplacement du journal. J'ai toujours résolu cela en rendant le répertoire app / storage accessible en écriture par Apache (que ce soit le groupe inscriptible sur "www-data", "apache" ou accessible en écriture dans le monde entier - cela dépend de la configuration de votre serveur.
Utilisateur du serveur Web
Sur les serveurs Ubuntu / Debian, votre PHP peut fonctionner en tant qu'utilisateur "www-data". Sur les serveurs CentOS / RedHat / Fedora, votre PHP peut être exécuté en tant qu'utilisateur "apache".
Assurez-vous que vos fichiers appartiennent à l'utilisateur qui exécute PHP:
Laravel 4
Laravel 5+ (dont 6)
la source
Une mise à jour de la réponse de fideloper pour Laravel 5 et sa nouvelle structure de fichiers est:
la source
Essayez ceci, dans la page public / index.php
la source
Les étapes suivantes ont résolu le problème d'écran blanc vierge sur mon Laravel 5.
bootstrap/cache
etstorage
.env.example
en.env
Cela générera la clé de chiffrement et mettra à jour la valeur de
APP_KEY
in.env
fichierCela devrait résoudre le problème.
Si le problème persiste, mettez
config/app.php
à jour avec la nouvelle clé générée à partir de la commande artisan key generate ci-dessus:la source
pour quiconque obtient une page vierge même après avoir rendu le stockage accessible pour afficher les erreurs, placez ces deux lignes dans les premières lignes de public / index.php pour voir au moins ce qui se passe. pour moi, cette erreur était là: la classe 'PDO' n'a pas été trouvée dans /var/www/***/config/database.php à la ligne 16
la source
Quand j'étais nouveau sur Linux, je trouvais généralement 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 vous suffit de suivre deux étapes et vous travaillerez comme un champion :)
(1) Donnez la permission. Exécutez ces commandes à partir du répertoire racine de votre projet
(2) Si vous avez cloné le projet ou extrait de github, exécutez
(3) Configurez correctement votre fichier .env et votre projet fonctionnera.
la source
J'étais aux prises 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 bien, mais je ne pouvais pas faire charger mes machines distantes d'une vue particulière. Je pouvais renvoyer des chaînes très bien, et certaines vues se chargeaient. Je me suis penché sur les autorisations pendant un moment avant de finalement réaliser que c'était un problème SELinux. Je viens de le définir de forcer à permissif et cela a fonctionné. J'espère que cela aidera quelqu'un d'autre qui pourrait rencontrer le même problème.
la source
J'ai également une autre option pour laquelle un problème de page blanche peut survenir. Si vous êtes en mode production et si vous avez mis en cache vos fichiers de configuration par php artisan (config: cache), essayez de supprimer le fichier cache en cours d'exécution:
ou supprimez-le manuellement (bootstrap / cache / config.php)
la source
L'exécution de cette commande l'a résolu pour moi:
Je suppose qu'une page d'erreur vierge était en partie mise en cache. J'ai dû effacer les caches.
la source
Dans mon cas, j'ai installé
laravel
plusieurs fois, et je suis sûr que l'autorisation d'écriture de dossier a été correctement donnée.Comme la plupart des réponses ci-dessus:
L'erreur est que ma configuration nginx provient de la documentation officielle .
J'ai seulement modifié le nom de domaine après la copie , puis j'ai eu une page vierge. J'ai essayé de redémarrer
nginx
etphp-fpm
, mais pas de travail pour moi.Enfin, j'ai ajouté cette configuration de ligne pour résoudre le problème.
J'espère pouvoir aider les autres.
la source
Face à l'écran vide dans Laravel 5.8. Tout semble bien avec le stockage et le dossier d'amorçage avec les droits 777. Sur
Cela montre que le problème était les espaces blancs dans le nom de l'application du fichier .env
la source
J'ai quelques problèmes pour l'installer dans une machine Vagrant. Ce qui fonctionne vraiment pour moi était d'exécuter un:
chmod -R o+w app/storage/
de l'intérieur de la machine Vagrant.
Référence: https://laracasts.com/lessons/vagrant-and-laravel
la source
Une autre chose qui peut causer le WSOD est l'absence du mot-clé 'return', comme dans:
return View::make('yourview');
par opposition à
View::make('yourview');
la source
Parfois, c'est parce que laravel 5.1 nécessite PHP> = 5.5.9. La mise à jour de php résoudra le problème.
la source
Étrange pour moi, mais dans mon cas, j'ai dû vider le cache du laravel pour résoudre le problème.
la source
J'ai également rencontré le même problème après avoir fait
composer update
J'ai essayé d'installer
composer required monolog/monolog
aussi mais n'a pas fonctionné.Ensuite, j'ai supprimé le répertoire / vendor et j'ai couru
composer install
et travaillé comme d'habitude.fondamentalement, il doit avoir rétabli la version précédente de mon monologue et des autres packages stables. donc mieux de ne pas
composer update
ce que j'ai remarqué en comparant les deux dossiers / vendor et j'ai trouvé que ces
classes
fichiers/vendor/monolog/monolog/src/Handler
étaient manquants après la mise à jour du compositeur.la source
Il peut y avoir de nombreuses raisons derrière l'écran vide sans erreurs. J'ai rencontré ce problème à plusieurs reprises chaque fois que je souhaite télécharger un projet laravel dans un hébergement partagé.
Raison: Version PHP incorrecte
Dans mon cas, le problème était dû à une version php incorrecte. J'avais la version php 7.1 sur l'ordinateur local où, comme dans l'hébergement partagé cpanel, il y avait la version php 5.6. Le passage de la version 5.6 à 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.
la source
Parfois, dans route.php, vous pouvez avoir
écrit avant
Cela peut être une méthode vide
Controller::show()
lorsque vous commencez à développer votre contrôleur à partir de zéro. Dans ce cas, vous obtiendrez une page vierge vide lors de la demande d'/add
URL. Cela se produit parce que la demande a été traitée par/{id}
route et que sa méthode ne renvoie rien.Essayez juste de placer l'
/add
itinéraire avant/{id}
la source
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 d'une fonction laravel "yield () car c'est un mot réservé en php 5.5
la source
La raison peut être
Middleware
si vous oubliez de mettre le code suivant à la fin de lahandle
fonctionla source
J'obtenais également la même erreur lorsque je démarre la première fois sur laravel + Ubuntu 14.04 Je viens de faire un clic droit sur le dossier d'amorçage et de stockage >>> propriétés >>> autorisation >> Autres accès >>> changez-le en "Créer et supprimer des fichiers" Modifier autorisation pour les fichiers joints
Je vous remercie
la source
J'ai obtenu ceci sur les forums Laravel, mais si vous avez récemment mis à jour les versions de Laravel ET les versions PHP ET que vous exécutez nginx, assurez-vous d'avoir changé votre fichier de configuration nginx pour refléter la nouvelle version de 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;
la source
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 n'a pas résolu le problème. J'ai utilisé Laravel 5.5 et j'ai utilisé PHP 5.6, pour le réparer, je suis allé à (cpanel-> PHP Selector) et j'ai changé en PHP 7.1 Et le problème est terminé.
la source
Dans les cas normaux, les erreurs doivent être enregistrées moins que
Le script ne peut pas écrire dans le fichier journal
Ou une erreur s'est produite sur les journaux du serveur d'application de contrôle de niveau supérieur comme Appache || Nginx
Ou c'est des limites de ressources comme les paramètres PHP ini
Ou les limites du système d'exploitation et ainsi de suite
la source
En plus des problèmes d'autorisation dans le dossier de stockage et de cache et les problèmes de version de php, il pourrait y avoir d'autres raisons d'afficher une page vierge sans aucun message d'erreur.
Par exemple, j'ai eu un message d'erreur de redéclarer 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 point de départ , d'exécuter des
artisan
commandes. par exemple:S'il y avait un problème, il s'affichera dans le terminal et vous aurez un indice et vous pourrez rechercher la solution sur Google.
la source
Un écran vide se produit également lorsque votre application Laravel tente 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, c'est que vous ne verrez aucune erreur dans les journaux Laravel. Vous ne verrez probablement aucune erreur dans les journaux PHP FPM. Vous pouvez trouver des erreurs dans les journaux de votre serveur http, par exemple nginx jette quelque chose comme
FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted
.Petite astuce: ajoutez
->limit(1000)
où1000
est votre limite, sur votre objet de requête.la source
J'ai rencontré ce problème lorsque j'ai essayé d'exécuter une application Laravel 5.8 sur mon serveur, en téléchargeant à partir du développement local à l'aide de Vagrant Homestead. Au bout d'un moment, j'ai compris que le sous-domaine dev sur le serveur live que j'utilisais était en quelque sorte réglé sur PHP 5.6.
cPanel> MultiPHP Manager> Définir sur PHP 7.2
fixé ça pour moi. J'espère que cela pourrait aider quelqu'un.
la source
utilisez ce .htaccess pour résoudre
la source
dans mon cas, le problème BLANK WHITE SCREEN était aussi simple qu'une faute de frappe ou un mauvais caractère sur le fichier env. J'étais en train d'implémenter socialite, donc quand j'ai configuré les identifiants .env pour Google+ comme ceci:
Mais, le fichier .env ne peut pas utiliser le signe '+', donc je dois faire cette correction:
J'espère que cela vous aidera à trouver une erreur stupide ...
la source
Dans mon cas, le redémarrage d'Apache a résolu le problème. pour Ubuntu / Debian:
la source