Pantalla blanca en blanco Laravel

117

Mi sitio de laravel estaba funcionando antes, recientemente actualicé a Apache 2.4 y PHP 5.5.7.

Ahora aparece una pantalla en blanco cuando voy a laravel.mydomain.com, nada en los registros de errores de Apache, rutas, etc. debería estar bien, ya que funcionaba antes.

.htaccess se está cargando ya que obtengo un 500 cuando inserto una línea no válida en /var/sites/laravel/public/.htaccess.

Aquí está mi .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]

Aquí está mi directiva de host virtual:

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>

Y 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
Mico
fuente
intente poner una nueva instalación en blanco de Laravel en laravel.mydomain.com - ¿Funciona entonces?
Laurence
HMM, intenté crear un proyecto con el compositor y aparentemente me falta openssl. ¿Hay alguna manera fácil de agregarlo después o necesito recompilar mi PHP con las opciones de configuración actuales + --with-openssl?
Mico
1
Tenía este problema de pantalla en blanco al mover un proyecto que ya estaba en funcionamiento a un servidor de prueba. No estaba llegando a ninguna parte, entonces decidí hacer lo mismo que la sugerencia de @ the-shift-exchange y crear una nueva instalación de Laravel, luego encontré el problema bastante rápido; el servidor de ensayo estaba ejecutando una versión desactualizada de PHP. Laravel requiere al menos PHP v5.4.0. Pensé en mencionarlo en caso de que alguien más tuviera el mismo problema.
igneosaurio
Verifique que no se haya alcanzado el límite de memoria; esto me ha causado WSOD antes en Laravel 4
Smith
Solo otro punto de datos: golpeé esto en una aplicación implementada en Kubernetes, usando NFS para montar los archivos web. Debido al rendimiento muy lento de NFS, parecía que Laravel no almacenaba en caché las vistas en un período de tiempo razonable. PHP-FPM estaba devolviendo una respuesta vacía. Se corrigió eliminando manualmente todas las vistas y volviendo a almacenarlas en caché.
Joe Niland

Respuestas:

222

apache

Hace esta respuesta describe o ayuda a su situación? La actualización a Apache 2.4 viene con algunos cambios en la configuración de Apache.

Laravel

¿Estás revisando los registros de Laravel o los de Apache?

Desde que actualicé a Laravel 4.1, he tenido "errores" de pantalla blanca (WSOD) cuando la aplicación no podía escribir en la ubicación del registro. Siempre he resuelto esto haciendo que Apache pueda escribir en el directorio de aplicaciones / almacenamiento (ya sea en el grupo en "www-data", "apache" o en todo el mundo), eso depende de la configuración de su servidor.

Usuario del servidor web

En servidores Ubuntu / Debian, su PHP puede estar ejecutándose como usuario "www-data". En los servidores CentOS / RedHat / Fedora, su PHP puede estar ejecutándose como usuario "apache".

Asegúrese de que sus archivos sean propiedad del usuario que ejecuta PHP:

# Debian/Ubuntu
$ sudo chown -R www-data /path/to/laravel/files

# CentOS/RedHat/Fedora
$ sudo chown -R apache /path/to/laravel/files

Tenga en cuenta que es posible que no se esté ejecutando como usuario www-data o apache. ¡Depende de su alojamiento y configuración!

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+ (incluidos 6)

# 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
fideloper
fuente
9
Parece que fue un problema de permisos. chmodding el directorio de laravel lo hizo funcionar.
Mico
3
@fideloper Esta respuesta realmente me salvó el día. Recibía WSOD y no aparecía nada en los registros en ninguna parte. chmodding la aplicación / almacenamiento se encargó de ello. ¡Me quito el sombrero virtual ante ti!
Tim Habersack
Sí, gracias por esto, realmente me salvó aquí. Estaba obteniendo un X-pad: evita el error del navegador en mi respuesta http y pensé que era eso
Simon Bennett
4
El permiso en la carpeta de almacenamiento resolvió mi problema. Pero, ¿por qué laravel no muestra problemas de permisos en el navegador?
Musa
4
Esto solucionó el problema para mí también ... nunca hubiera encontrado esto por mi cuenta. Estoy de acuerdo en que sería mejor si se mostrara algún tipo de mensaje de error en lugar de la "pantalla blanca de la muerte".
dusty909
65

Una actualización de la respuesta de fideloper para Laravel 5 y su nueva estructura de archivos es:

$ sudo chmod -R o+w storage/
EddardOmeka
fuente
¡Prestigio! Resolvió mi problema para L5 en el servidor ubuntu 14.04.
Dylan Pierce
También funcionó para mí, en Mac OS X 10.10.3
dave
Funcionó para mí - CentOS 6.8 (Final)
Mike
26

Prueba esto, en la página public / index.php

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
CG_DEV
fuente
Esto era en realidad lo que necesitaba porque por alguna razón en el trabajo del servidor (Plesk) no estaba registrando nada en el registro de errores y nada en el registro de laravel, agregando esto me mostró que en realidad era un archivo faltante lo que estaba causando mi espacio en blanco 500 pantalla, muchas gracias!
Sam
También tenía pantalla blanca y no tenía ningún error. Todo el permiso y todo fue perfecto. Esta respuesta me ayudó a ver realmente lo que está pasando. Gracias.
SI
Me he equivocado con este problema desde ayer. Más allá del permiso de las carpetas, en mi caso, se informó de esta verificación que el servidor no ha extraído todas las carpetas dentro de la carpeta del proveedor. Qué misterio ... Realmente un buen enfoque. Útil para servidores públicos sin poco acceso.
CodeToLife
26

Los siguientes pasos resolvieron el problema de la pantalla blanca en blanco en mi Laravel 5.

  • Ve a tu carpeta raíz de Laravel
  • Dar permiso de escritura a directorios bootstrap/cacheystorage

sudo chmod -R 777 bootstrap / cache storage

  • Cambiar nombre .env.examplea.env
  • Genere la clave de la aplicación con el siguiente comando en la terminal / símbolo del sistema desde la raíz de Laravel:

php clave artesanal: generar

Esto generará la clave de cifrado y actualizará el valor de APP_KEYen.env archivo

Esto deberia resolver el problema.

Si el problema persiste, actualice config/app.php con la nueva clave generada a partir del comando de generación de clave artesanal anterior:

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

a

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

Mukesh Chapagain
fuente
10

para cualquiera que tenga una página en blanco incluso después de hacer accesible el almacenamiento para mostrar errores, coloque estas dos líneas en las primeras líneas de public / index.php para ver al menos lo que está sucediendo. para mí, este error estaba allí: la clase 'PDO' no se encuentra en /var/www/***/config/database.php en la línea 16

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

Cuando era nuevo en Linux, generalmente encontraba este error con mi Proyecto Laravel. Los errores blancos significan error, puede tener algún problema de permiso o error.

Solo tienes que seguir dos pasos y trabajarás como campeón :)

(1) Dar el permiso. Ejecute este comando desde el directorio raíz de su proyecto

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

(2) Si clonó el proyecto o lo extrajo de github, ejecute

composer install

(3) Configure su archivo .env correctamente y su proyecto funcionará.

Vikash
fuente
Faltaba el paso (2) en mi instalación. Había clonado el proyecto pensando que tenía todos los archivos necesarios en el directorio para que funcionara de fábrica. Todavía tenía problemas, pero este fue un paso crucial.
Jonathan Hickman
5

Estaba luchando con un problema similar en un servidor CentOS. Usar php artisan serv y acceder a él a través del puerto 8000 en la máquina local funcionó bien, pero no pude hacer que mis máquinas remotas cargaran una vista en particular. Podría devolver cadenas bien y algunas vistas se estaban cargando. Perseguí los permisos durante un tiempo antes de que finalmente me diera cuenta de que era un problema de SELinux. Lo configuré de aplicar a permisivo y funcionó. Espero que ayude a alguien más que pueda tener el mismo problema.

setenforce permissive
Kamkat86
fuente
Esto me ayudó todo el tiempo
Umair Hamid
5

También tengo una opción más por la que puede ocurrir un problema de página en blanco. Si está en modo de producción y si almacenó en caché sus archivos de configuración por php artisan (config: cache), intente eliminar el archivo de caché ejecutando:

php artisan config:clear

o elimínelo manualmente (bootstrap / cache / config.php)

Boris Tetřev
fuente
1
Probé todo lo demás y esto es lo último que funcionó para mí.
DavidHyogo
Resulta que mi archivo env no era válido, al ejecutar este comando, hágamelo saber.
SvEnjoyPro
4

Ejecutar este comando lo resolvió para mí:

php artisan view:clear

Supongo que una página de error en blanco estaba almacenada en caché. Tuve que limpiar los cachés.

Andrés
fuente
4

En mi caso, lo he instalado laravelmuchas veces y estoy seguro de que el permiso de escritura de la carpeta se ha otorgado correctamente.

Como la mayoría de las respuestas anteriores:

sudo chmod 777 -R storage bootstrap

El error es que mi configuración de nginx proviene de la documentación oficial .

Solo modifiqué el nombre de dominio después de copiar, luego obtuve una página en blanco. Intenté reiniciar nginxy php-fpm, pero no funcionó para mí.

Finalmente, agregué esta configuración de línea para resolver el problema.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Espero poder ayudar a otros.

qskane
fuente
1
Perdí todo un día libre por este problema. Esta es la respuesta que finalmente me salvó. Ojalá pudiera darle más que un voto positivo. ¡Gracias!
Miles
3

Frente a la pantalla en blanco en Laravel 5.8. Todo parece estar bien tanto con el almacenamiento como con la carpeta de arranque con los derechos 777. En

php artisan cache:clear

Muestra que el problema eran los espacios en blanco en el nombre de la aplicación del archivo .env

saad
fuente
1

Otra cosa que puede causar que el WSOD no tenga la palabra clave 'return', como en:

return View::make('yourview');

Opuesto a

View::make('yourview');

emragins
fuente
1

A veces es porque laravel 5.1 requiere PHP> = 5.5.9. Actualizar php resolverá el problema.

Kevin
fuente
1

Extraño para mí, pero en mi caso tuve que borrar el caché de laravel para resolver el problema.

antongorodezkiy
fuente
1

También enfrenté el mismo problema después de hacer composer update

Intenté instalar composer required monolog/monolog también pero no funcionó.

Luego eliminé el directorio / vendor y ejecuté composer instally trabajé normalmente.

Básicamente, debe haber revertido mi monólogo y otras versiones de paquetes estables a la anterior. así que mejor nocomposer update

lo que noté al comparar las carpetas / vendor y encontré que faltaban esos classesarchivos /vendor/monolog/monolog/src/Handlerdespués de la actualización del compositor.

Amit Shah
fuente
1

Puede haber muchas razones detrás de la pantalla en blanco sin errores. Me he enfrentado a este problema muchas veces cada vez que quiero cargar un proyecto de laravel en un alojamiento compartido.

Razón: Versión PHP incorrecta

En mi caso, el problema se debió a una versión incorrecta de php. Tenía la versión de php 7.1 en la computadora local donde, como en el cpanel de alojamiento compartido, había la versión de php 5.6. Cambiar la versión de 5.6 a 7.1 funcionó para mí.

Puede cambiar la versión de php en cpanel desde el administrador de multiphp disponible en la página de inicio de cpanel.

Sagar Gautam
fuente
1

A veces en route.php puede tener

Route::get('/{id}', 'Controller@show'..

escrito antes

Route::get('/add', 'Controller@add'..

Puede ser un método vacío Controller::show()cuando comienzas a desarrollar tu controlador desde cero. En este caso, obtendrá una página en blanco vacía al solicitar la /addURL. Sucede porque la solicitud se manejó por /{id}ruta y su método no devuelve nada.

Solo intenta colocar la /addruta antes/{id}

Илья Алисов
fuente
0

Otro problema con el mismo comportamiento es usar Laravel 3 con PHP 5.5.x. Tienes que cambiar el nombre de alguna función de laravel "yield () porque es una palabra reservada en php 5.5

Hernán
fuente
0

La razón puede ser Middlewaresi olvida poner el siguiente código al final de la handlefunción

return $next($request);
Farid Movsumov
fuente
0

También recibí el mismo error cuando comencé por primera vez en laravel + Ubuntu 14.04 Simplemente haga clic derecho en la carpeta de arranque y almacenamiento >>> propiedades >>> permiso >> Acceso de otros >>> cámbielo a "Crear y eliminar archivos" Cambiar permiso para archivos adjuntos

Gracias

user1846871
fuente
0

Obtuve esto de los foros de Laravel, pero si recientemente actualizó las versiones de Laravel Y las versiones de PHP Y está ejecutando nginx, asegúrese de haber cambiado su archivo de configuración de nginx para reflejar la nueva versión de PHP. Por ejemplo:

En el archivo de configuración de su sitio nginx (aquí: / etc / nginx / sites-available), cambie

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

a

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

Ben Wilson
fuente
0

Tengo el mismo problema. Ya cambio la carpeta chmod por la carpeta de almacenamiento. completar la configuración de la base de datos en .env, pero no solucionó el problema. Usé Laravel 5.5 y usé PHP 5.6, para arreglarlo fui a (cpanel-> PHP Selector) y cambié a PHP 7.1 Y el problema está hecho.

Abed Putra
fuente
0

En casos normales, los errores deben registrarse a menos que

El script no puede escribir en el archivo de registro

  • comprobar su camino
  • permisos

O se produjo un error en los registros del servidor de la aplicación de verificación de nivel superior como Appache || Nginx

O son límites de recursos como la configuración de PHP ini

memory_limit
max_input_time
max_execution_time

O los límites del sistema operativo, etc.

Bdwey
fuente
0

Además de los problemas de permisos en la carpeta de almacenamiento y caché y los problemas de la versión php, podría haber otras razones para mostrar una página en blanco sin ningún mensaje de error.

Por ejemplo, tuve un mensaje de error de redeclaración sin ningún registro y con una página en blanco. Hubo un conflicto entre mi propia función de ayudante y una función de proveedor.

Sugiero como punto de partida , ejecutar artisancomandos. por ejemplo:

php artisan cache:clear

Si hubo un problema, se le preguntará en la terminal y tendrá una pista y puede buscar en Google la solución.

Khalil Laleh
fuente
0

La pantalla en blanco también ocurre cuando su aplicación Laravel intenta mostrar demasiada información y los límites de PHP se activan (por ejemplo, muestra decenas de miles de registros de bases de datos en una sola página). La peor parte es que no verá ningún error en los registros de Laravel. Probablemente tampoco verá ningún error en los registros de PHP FPM. Puede encontrar errores en los registros de su servidor http, por ejemplo, nginx arroja algo comoFastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted .

Consejo breve: agregue ->limit(1000)dónde 1000está su límite, en su objeto de consulta.

f055
fuente
0

Encontré este problema cuando intenté ejecutar una aplicación Laravel 5.8 en mi servidor, subiendo desde el desarrollo local usando Vagrant Homestead. Después de un tiempo, descubrí que el subdominio dev en el servidor en vivo que estaba ejecutando estaba configurado de alguna manera en PHP 5.6.

cPanel> MultiPHP Manager> Establecer en PHP 7.2

arregló esto para mí. Espero que esto pueda ayudar a alguien.

Iñigo
fuente
0

usa este .htaccess para resolver

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>
Kaushik Dey
fuente
0

en mi caso, el problema de la PANTALLA BLANCA EN BLANCO fue tan simple como un error tipográfico o un carácter incorrecto en el archivo env. Estaba implementando socialite, así que cuando estaba configurando las credenciales .env para Google+ así:

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

Pero, el archivo .env no puede usar el signo '+', así que tengo que hacer esta corrección:

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

Espero que esto te ayude a encontrar un error tonto ...

Absolutkarlos
fuente
-2

En mi caso, reiniciar Apache solucionó el problema. para Ubuntu / Debian:

sudo service apache2 restart
Khairulnizam Dahari
fuente