Laravel пустой белый экран

Мой сайт laravel работал раньше, я недавно обновился до Apache 2.4 и PHP 5.5.7.

Теперь я получаю белый пустой экран, когда я иду на laravel.mydomain.com, ничего в журналах ошибок apache, маршрутах и ​​т. Д. Должно быть хорошо, как раньше.

.htaccess загружается, когда я получаю 500, когда вставляю неверную строку в /var/sites/laravel/public/.htaccess.

Heres my .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] 

Heres моя директива виртуального хозяина:

 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> 

И 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 

апаш

Этот ответ описывает или помогает вашей ситуации? Обновление Apache 2.4 происходит с некоторыми изменениями в конфигурации Apache.

Laravel

Вы проверяете журналы Laravel или журналы Apache?

Начиная с обновления до Laravel 4.1, у меня были белые «ошибки» (WSOD), когда приложение не могло писать в лог. Я всегда решал это, создавая каталог приложений / хранилищ, доступный для записи Apache (любая группа, доступная для записи на «www-data», «apache» или запись в мире), которая зависит от настройки вашего сервера.

Пользователь веб-сервера

На серверах Ubuntu / Debian ваш PHP может работать как пользовательские «www-data». На серверах CentOS / RedHat / Fedora вы можете запускать PHP как пользовательский «apache».

Убедитесь, что ваши файлы принадлежат пользователю, на котором запущен PHP:

 # Debian/Ubuntu $ sudo chown -R www-data /path/to/laravel/files # CentOS/RedHat/Fedora $ sudo chown -R apache /path/to/laravel/files 

Обратите внимание, что вы не можете работать как пользовательские www-данные или apache. Это зависит от вашего хостинга и настройки!

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 

Обновление для ответа Fideloper для Laravel 5 и его новой файловой структуры:

 $ sudo chmod -R o+w storage/ 

Следующие шаги решили проблему белого белого экрана на моем Laravel 5.

  • Перейдите в свою корневую папку Laravel
  • Дать разрешение на запись в каталоги bootstrap/cache и storage

sudo chmod -R 777 bootstrap / cache storage

  • Переименуйте .env.example в .env
  • Создайте ключ приложения с помощью следующей команды в командной строке терминала / командной строки от корня Laravel:

PHP-ключ: генерировать

Это создаст ключ шифрования и обновит значение APP_KEY в .env файле

Это должно решить проблему.

Если проблема все еще существует, обновите config/app.php с новым ключом, сгенерированным с помощью данной команды:

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

в

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

Попробуйте это, на странице public / index.php

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

Когда я был знаком с Linux. Обычно я нашел эту ошибку в своем проекте Laravel. Белые ошибки означают ошибку, у нее могут быть проблемы с разрешением или ошибки.

Вам просто нужно выполнить два шага и работать как чемпион 🙂

(1) Дайте разрешение. Запустите эту команду из корневого каталога вашего проекта

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

(2) Если вы клонировали проект или вытащили из github, тогда запустите

 composer install 

(3) Настройте файл .env правильно, и ваш проект будет работать.

для тех, кто получает пустую страницу даже после того, как хранилище, доступное для отображения ошибок, помещает эти две строки в первые строки public / index.php, чтобы увидеть, что происходит по крайней мере. для меня эта ошибка была: класс «PDO» не найден в /var/www/***/config/database.php в строке 16

 error_reporting(E_ALL); ini_set('display_errors', 1); 

Я столкнулся с подобной проблемой на сервере CentOS. Использование сервиса php artisan и доступ к нему через порт 8000 на локальном компьютере работало нормально, но я не мог заставить мои удаленные компьютеры загружать определенное представление. Я мог бы вернуть строки в порядке, и некоторые виды загружались. Некоторое время я преследовал свой хвост на разрешениях, прежде чем я понял, что это проблема SELinux. Я просто настроил его на принудительное выполнение, и он сработал. Надеюсь, что это поможет кому-то другому, который может столкнуться с одной и той же проблемой.

 setenforce permissive 

У меня есть некоторые проблемы, чтобы настроить его на машине бродяг. Для меня действительно работает:

chmod -R o+w app/storage/

изнутри машины бродяг.

Ссылка: https://laracasts.com/lessons/vagrant-and-laravel

Еще одна вещь, которая может вызвать WSOD, не содержит ключевое слово «return», как в:

return View::make('yourview');

в отличие от

View::make('yourview');

Иногда это потому, что для laravel 5.1 требуется PHP> = 5.5.9. Обновление php решит проблему.

Другой проблемой с тем же поведением является использование Laravel 3 с PHP 5.5.x. Вы должны изменить имя функции laravel «yield (), потому что это зарезервированное слово в php 5.5

Причина может быть Middleware если вы забудете поставить следующий код в конец функции handle

 return $next($request); 

Странно для меня, но в моем случае я должен был очистить кеш laravel, чтобы решить проблему.

Я также получал такую ​​же ошибку, когда начинаю первый раз на laravel + Ubuntu 14.04. Я просто щелкаю правой кнопкой мыши по папке загрузки и хранения >>> свойства >>> разрешение >> Другие доступ >>> изменить его на «Создать и удалить файлы» Изменить разрешение на вложенные файлы

спасибо

Получил это из форумов Laravel, но если вы недавно обновили версии Laravel и версии PHP и запускаете nginx, убедитесь, что вы изменили свой конфигурационный файл nginx, чтобы отразить новую версию PHP. Например:

В вашем конфигурационном файле сайта nginx (здесь: / etc / nginx / sites-available), измените

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

в

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

Это изменяет работу для настройки моего localhost Ubuntu server 14.xx

 # Apply all permission to the laravel 5.x site folders $ sudo chmod -R 777 mysite 

Также были внесены изменения в настройки httpd, доступные для сайта, настройки Apache2

Добавить настройки:

 Options +Indexes +FollowSymLinks +MultiViews Require all granted 

В моем случае перезапуск apache исправил проблему. для Ubuntu / Debian:

 sudo service apache2 restart