web-dev-qa-db-pt.com

Laravel tela branca em branco

Meu site laravel estava funcionando antes, eu recentemente atualizei para o Apache 2.4 e PHP 5.5.7.

Agora eu estou recebendo uma tela branca em branco quando vou para laravel.mydomain.com, nada em logs de erro do Apache, rotas e etc deve ser bom como funcionou antes.

O .htaccess está carregando enquanto recebo um 500 quando insiro uma linha inválida em /var/sites/laravel/public/.htaccess.

Aqui está o meu .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]

Aqui está minha diretiva virtual Host:

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>

E 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

Será que esta resposta descreve ou ajuda a sua situação? A atualização para o Apache 2.4 vem com algumas mudanças na configuração do Apache. 

Laravel

Você está verificando os logs do Laravel ou os logs do Apache?

Desde a atualização para Laravel 4.1, eu tive "erros" de tela branca (WSOD) quando o aplicativo não pôde gravar no local do log. Eu sempre resolvi isso fazendo o diretório app/storage gravável pelo Apache (seja um grupo gravável para "www-data", "Apache" ou world-writable - isso depende da configuração do seu servidor.

Usuário do servidor da web

Nos servidores Ubuntu/Debian, o seu PHP pode estar rodando como usuário "www-data". Nos servidores CentOS/RedHat/Fedora, você PHP pode estar rodando como usuário "Apache".

Certifique-se de que seus arquivos são de propriedade do usuário que está executando o PHP:

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

# CentOS/RedHat/Fedora
$ Sudo chown -R Apache /path/to/laravel/files

Observe que você pode não estar executando como usuário www-data ou Apache. Depende da sua hospedagem e configuração!

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

Uma atualização da resposta do fideloper para Laravel 5 e sua nova estrutura de arquivos é:

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

As etapas a seguir resolveram o problema de tela branca em branco no meu Laravel 5.

  • Vá para sua pasta raiz Laravel
  • Dar permissão de gravação aos diretórios bootstrap/cache e storage

Sudo chmod -R 777 bootstrap/cache de armazenamento

  • Renomeie .env.example para .env
  • Gere a chave do aplicativo com o seguinte comando no terminal/command-Prompt da raiz Laravel: 

php artisan key: gerar

Isso gerará a chave de criptografia e atualizará o valor de APP_KEY no arquivo .env

Isso deve resolver o problema. 

Se o problema persistir, atualize config/app.php com a nova chave gerada a partir do comando de geração de chave de artesão acima:

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

para

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

22
Mukesh Chapagain

Tente isso, na página public/index.php

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

para qualquer um que tenha uma página em branco, mesmo depois de tornar o armazenamento acessível para exibir erros, coloque essas duas linhas nas primeiras linhas de public/index.php para ver o que está acontecendo, pelo menos. para mim este erro estava lá: Classe 'PDO' não encontrada em /var/www/***/config/database.php na linha 16 

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

Quando eu era novo no Linux, normalmente encontrei este erro com o meu Laravel Projeto. Erros de branco significam erro, pode ter algum problema de permissão ou erro.

Você só tem que seguir dois passos, e vai funcionar como campeão :)

(1) Dê a permissão. Execute estes comandos a partir do diretório raiz do seu projeto

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

(2) Se você clonou o projeto ou puxou do github, execute

composer install

(3) Configure seu arquivo .env corretamente e seu projeto funcionará.

5
Vikash

Eu estava lutando com um problema semelhante em um servidor CentOS. Usando o php artisan serv e acessando-o através da porta 8000 na máquina local funcionou bem, mas não consegui fazer com que minhas máquinas remotas carregassem uma determinada visão. Eu poderia retornar strings bem, e algumas visões estavam carregando. Persegui minhas permissões por algum tempo antes de finalmente perceber que era um problema do SELinux. Eu apenas configurei isso de permissivo para permissivo e funcionou. Espero que ajude alguém que esteja enfrentando o mesmo problema. 

setenforce permissive
4
Kamkat86

No meu caso, instalei laravel muitas vezes, e tenho certeza de que a permissão de gravação da pasta foi dada corretamente.

Como a maioria das respostas acima:

Sudo chmod 777 -R storage bootstrap

O erro é que minha configuração nginx vem da documentação oficial .

Eu modifiquei apenas o nome de domínio depois de copiar, então eu tenho uma página em branco. Eu tentei reiniciar nginx e php-fpm, mas não funciona para mim.

Finalmente, adicionei essa configuração de linha para resolver o problema.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Espero poder ajudar os outros.

2
qskane

Eu também enfrentei o mesmo problema depois de fazer composer update

Eu tentei instalar composer required monolog/monolog também, mas não funcionou.

Então eu removi o diretório/vendor e executei o composer install e trabalhei conforme o normal. 

basicamente, ele deve ter revertido meu monolog e outras versões de pacotes estáveis ​​de volta para o anterior. então é melhor não composer update

o que eu notei comparando ambas as pastas/vendor e descobri que os arquivos classes em /vendor/monolog/monolog/src/Handler estavam faltando após a atualização do composer.

1
Amit Shah

Estranho para mim, mas no meu caso eu tive que limpar o cache do laravel para resolver o problema.

1
antongorodezkiy

Eu tenho alguns problemas para configurá-lo em uma máquina Vagrant. O que realmente funciona para mim foi executar um:

chmod -R o+w app/storage/ 

de dentro da máquina do Vagrant.

Referência: https://laracasts.com/lessons/vagrant-and-laravel

1
gvsrepins

Outra coisa que pode causar o WSOD está faltando a palavra-chave 'return', como em:

return View::make('yourview');

ao contrário de 

View::make('yourview');

1
emragins

Eu também tenho mais uma opção porque o problema de página em branco pode ocorrer. Se você estiver no modo de produção e se você armazenou em cache seus arquivos de configuração pelo php artisan (config: cache), tente excluir a execução do arquivo de cache:

php artisan config:clear

ou apague-o manualmente (bootstrap/cache/config.php)

1
Boris Tetřev

Às vezes é porque o laravel 5.1 requer PHP> = 5.5.9. Atualizar o php irá resolver o problema.

1
Kevin

Outro problema com o mesmo comportamento é usar Laravel 3 com PHP 5.5.x. Você tem que mudar algum nome da função laravel "yield () porque é um Word reservado no php 5.5 

0
Hernan

O motivo pode ser Middleware se você esquecer de colocar o código a seguir no final da função handle

return $next($request);
0
Farid Movsumov

Eu também estava recebendo o mesmo erro quando eu comecei pela primeira vez no laravel + Ubuntu 14.04 Eu apenas cliquei direito na pasta bootstrap e armazenamento >>> propriedades >>> permissão >> Outros Access >>> mude para "Create e excluir arquivos "Alterar permissão para arquivos incluídos 

Obrigado 

0
user1846871

Além de problemas de permissão em armazenamento e pasta de cache e problemas de versão do php, pode haver outros motivos para exibir a página em branco sem nenhuma mensagem de erro.

Por exemplo, eu tive uma mensagem de erro redeclare sem nenhum log e com a página em branco em branco. Houve um conflito entre minha própria função auxiliar e uma função de fornecedor.

Eu sugiro como um ponto de partida , execute comandos artisan. por exemplo:

php artisan cache:clear

Se houve um problema, ele será solicitado no terminal e você tem um Clue e você pode google para a solução.

0
Khalil Laleh

Eu bati esse problema quando tentei executar um Laravel 5.8 app no ​​meu servidor, fazendo o upload do desenvolvimento local usando Vagrant Homestead. Depois de um tempo eu descobri que o subdomínio dev no servidor live que eu estava rodando estava de alguma forma definido como PHP 5.6.

cPanel> Gerenciador MultiPHP> Definido como PHP 7.2

consertou isso para mim. Espero que isso possa ajudar alguém.

0
Inigo

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

Executar este comando resolveu para mim:

php artisan view:clear

Eu acho que uma página de erro em branco foi um pouco como em cache. Tive que limpar os caches.

0
Andrew

A tela em branco também acontece quando o aplicativo Laravel tenta exibir informações em excesso e PHP limita o kick in (por exemplo, exibindo dezenas de milhares de registros do banco de dados em uma única página). A pior parte é que você não verá nenhum erro no Laravel logs. Você provavelmente não verá nenhum erro nos logs PHP FPM também. Você pode encontrar erros nos registros do servidor http, por exemplo, o nginx gera algo como FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted.

Dica curta: adicione ->limit(1000) onde 1000 é o seu limite, no seu objeto de consulta.

0
f055

Obtive isso do Laravel fóruns, mas se você atualizou recentemente Laravel versões AND PHP versões E estão rodando nginx, certifique-se de ter alterado seu arquivo de configuração nginx para reflita a nova PHP versão. Por exemplo:

No seu arquivo de configuração do site nginx (aqui:/etc/nginx/sites-available), altere

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

para

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

0
Ben Wilson

Eu tenho o mesmo problema. Eu já mudo a pasta chmod para a pasta Storage. preencha as configurações do banco de dados em .env, mas não consertei o problema. Eu usei Laravel 5.5 e usei PHP 5.6, para corrigi-lo eu fui (cpanel-> PHP Selector ) e eu mudei para PHP 7.1 E o problema está feito.

0
Abed Putra

Em casos normais, os erros devem ser registrados A menos que

Script não pode gravar no arquivo de log

  • verifique seu caminho
  • permissões

Ou ocorreu um erro nos logs do servidor de aplicativos de verificação de nível superior, como o Appache || Nginx

Ou são limites de recursos Como PHP configurações ini

memory_limit
max_input_time
max_execution_time

Ou limite do sistema operacional e assim por diante 

0
Bdwey