Laravel Blanc Écran
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 vide quand je vais à laravel.mydomain.com, rien dans les journaux d'erreurs apache, les routes et autres. doit être fine qu'elle marchait avant.
.htaccess se charge alors que je reçois un 500 lorsque j'insère une ligne invalide dans /var/sites/laravel/public/.htaccess.
Voilà 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 ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Voilà mon hôte virtuel directive:
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
24 réponses
Apache
Ne cette réponse les décrire ou de les 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 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 à L'emplacement du journal. J'ai toujours résolu ce problème en faisant le répertoire app / storage accessible en écriture par Apache (soit groupe Accessible en écriture à "www-data", "apache" ou World-writable - cela dépend de la configuration de votre serveur.
Utilisateur Du Serveur Web
sur les serveurs Ubuntu/Debian, votre PHP peut fonctionner comme 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 sont la propriété de 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 ne pouvez pas être exécuté en tant qu'utilisateur www-data ou apache. Cela dépend de votre hébergement et de l'installation!
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 fichiers est:
$ sudo chmod -R o+w storage/
les étapes suivantes ont résolu le problème d'écran blanc vierge sur mon Laravel 5.
- allez dans votre dossier Laravel root
- donne la permission d'écrire à
bootstrap/cache
etstorage
annuaires
sudo chmod -R 777 bootstrap / cache storage
- renommer
.env.example
en.env
- Generate touche d'application avec la commande suivante en terminal / commande-invite à partir de Laravel root:
php artisan clés:générer des
cela générera la clé de cryptage et mettra à jour la valeur de APP_KEY
dans .env
fichier
cela devrait résoudre le problème.
si le problème existe toujours, mettez à jour config/app.php
avec la nouvelle clé générée à partir de ce qui précède commande artisan key generate:
'key' => env('APP_KEY', 'SomeRandomString'),
à
'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),
Essayez ceci, dans le public/index.php page
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
pour toute personne qui obtient page blanche même après avoir rendu le stockage accessible pour afficher des erreurs mettre ces deux lignes à la première ligne de public/index.php pour voir ce qui se passe au moins. pour moi, cette erreur est là :de la Classe PDO' ne 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 sous Linux.J'ai souvent trouvé cette erreur avec mon projet Laravel. White errors signifie erreur, il peut y avoir un problème de permission ou une erreur.
vous avez juste à suivre deux étapes, et va travailler comme champ:)
(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écuter
composer install
(3) Configurer votre .env fichier correctement, et votre projet de travaux.
je me débattais avec un problème similaire sur un serveur CentOS. L'utilisation de php artisan serv et l'accès par le port 8000 sur la machine locale ont bien fonctionné, mais n'ont pas pu obtenir mes machines distantes pour charger une vue particulière. Je pouvais rendre les cordes très bien, et quelques vues se chargeaient. J'ai poursuivi mes recherches sur les permissions pendant un moment avant de finalement réaliser que c'était un problème de SELinux. Je l'ai mis de force à permissive et ça a marché. L'espoir qui aide quelqu'un d'autre là-bas qui pourrait rencontrer la même question.
setenforce permissive
j'ai quelques problèmes pour le configurer dans une machine vagabonde. Ce qui fonctionne vraiment pour moi a été Exécuter a:
chmod -R o+w app/storage/
de l'intérieur de la machine vagabonde.
référence: https://laracasts.com/lessons/vagrant-and-laravel
une autre chose qui pourrait 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 require PHP >= 5.5.9. Mettre à jour php résoudra le problème.
autre problème avec le même comportement est D'utiliser Laravel 3 avec PHP 5.5.x. Vous devez changer le nom de la fonction laravel " yield () parce que c'est un mot réservé dans php 5.5
la raison peut être Middleware
si vous oubliez de mettre le code suivant à la fin de handle
fonction
return $next($request);
étrange pour moi, mais dans mon cas j'ai dû vider la cache du laravel pour résoudre le problème.
j'ai également eu la même erreur lorsque je commence la première fois sur laravel + Ubuntu 14.04 J'ai juste à droite, cliquez sur bootstrap et le stockage du dossier >>> propriétés >>>autorisation>> Accès >>> changer pour "Créer et supprimer des fichiers" autorisation de Modification de fichiers joints
Merci
a obtenu ceci des forums Laravel, mais si vous avez récemment mis à jour les versions Laravel et PHP et que vous utilisez nginx, assurez-vous que vous avez changé votre fichier de configuration Nginx pour refléter la nouvelle version PHP. Par exemple:
dans votre fichier de configuration du site nginx (ici: /etc/nginx/sites-disponible), modifier
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 .env, mais n'a pas réglé le problème. J'ai utilisé Laravel 5.5 et J'ai utilisé PHP 5.6, pour le corriger je suis allé à (cpanel->PHP Selector) et j'ai changé en PHP 7.1 et le problème est fait.
dans les cas normaux, les erreurs doivent être notées sauf si
Script ne peut pas écrire dans le fichier journal
- vérifier son chemin
- autorisations
Ou erreur s'est produite sur les plus élevées vérification du niveau d'application serveur de logs comme Appache || Nginx
ou ses limites de ressources Comme les paramètres d'ini De PHP
memory_limit
max_input_time
max_execution_time
ou limites OS et ainsi de suite
en plus des problèmes D'autorisation dans les problèmes de stockage et de cache et de version 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 redeclare sans aucun log et avec une page blanche vierge. Il y avait un conflit entre ma propre fonction d'AIDE et une fonction de fournisseur.
je suggère comme un point de départ , courir artisan
commande. par exemple:
php artisan cache:clear
S'il y avait un problème, il sera invité dans le terminal et vous avez un indice et vous pouvez google pour la solution.
l'Exécution de cette commande résolu pour moi:
php artisan view:clear
je suppose qu'une page d'erreur Vierge était quelque peu mise en cache. Dû effacer les caches.
L'écran blanc se produit aussi quand votre application Laravel essaie d'afficher trop d'informations et les limites de PHP se déclenchent (par exemple en affichant des 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 logs de Laravel. Vous ne verrez probablement pas d'erreurs dans les journaux PHP FPM. Vous pourriez trouver des erreurs dans les journaux de votre serveur http, par exemple nginx lance quelque chose comme FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted
.
extrémité courte: ajouter ->limit(1000)
où 1000
est votre limite, sur votre objet de requête.
dans mon cas , j'ai installé laravel
plusieurs fois, et je suis sûr que la permission 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 .
Je n'ai modifié le nom de domaine qu'après avoir copié le paquet, puis j'ai eu une page blanche.
J'ai essayé redémarrer nginx
et php-fpm
, mais pas travailler pour moi.
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 aussi une option de plus pourquoi la question de page blanche peut se produire. 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 exécutant:
php artisan config:clear
ou le supprimer manuellement (bootstrap/cache/config.php)
dans mon cas, redémarrer apache a résolu le problème. Pour Ubuntu / Debian:
sudo service apache2 restart
cette modification fonctionne pour mon serveur Ubuntu localhost 14.XX réglage
# Apply all permission to the laravel 5.x site folders
$ sudo chmod -R 777 mysite
a également fait des changements sur le site disponible httpd setting apache2 settings
ajouter les paramètres:
Options +Indexes +FollowSymLinks +MultiViews
Require all granted