Laravel пустой белый экран
Мой сайт laravel работал до этого, я недавно обновился до Apache 2.4 и PHP 5.5.7.
Теперь я получаю белый пустой экран, когда я перехожу на laravel.mydomain.com, ничего в журналах ошибок apache, маршрутах и т.д. должно быть хорошо, как это было раньше.
.htaccess загружается, когда я получаю 500, когда вставляю недопустимую строку в /var/sites/laravel/public/.htaccess.
Вот мой .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]
Вот моя директива виртуального хозяина:
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
Ответы
Ответ 1
Apache
этот ответ описывает или помогает вашей ситуации? Обновление до Apache 2.4 идет с некоторыми изменениями в конфигурации Apache.
Laravel
Вы проверяете журналы Laravel или Apache?
Начиная с обновления до Laravel 4.1 у меня были "ошибки" белого экрана (WSOD), когда приложение не могло записать в местоположение журнала. Я всегда решал эту проблему, делая каталог app/storage доступным для записи с помощью 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-data или apache. Это зависит от вашего хостинга и настроек!
Ларавел 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+ (включая 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
Ответ 2
Обновление для ответа fideloper для Laravel 5 и его новой файловой структуры:
$ sudo chmod -R o+w storage/
Ответ 3
Попробуйте это на странице public/index.php
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
Ответ 4
Следующие шаги решили проблему с белым экраном на моем Laravel 5.
- Перейдите в корневую папку Laravel
- Укажите права на запись в каталоги
bootstrap/cache
и storage
sudo chmod -R 777 bootstrap/cache storage
- Переименуйте
.env.example
в .env
- Сгенерировать ключ приложения с помощью следующей команды в терминале/командной строке от корня Laravel:
php artisan key: generate
Это приведет к генерации ключа шифрования и обновит значение APP_KEY
в .env
файле
Это должно решить проблему.
Если проблема все еще существует, обновите config/app.php
новым ключом, сгенерированным с помощью команды генерации ключа мастера:
'key' => env('APP_KEY', 'SomeRandomString'),
к
'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),
Ответ 5
для тех, кто получает пустую страницу даже после того, как хранилище, доступное для отображения ошибок, помещает эти две строки в первые строки public/index.php, чтобы увидеть, что происходит по крайней мере. для меня эта ошибка была: класс "PDO" не найден в /var/www/ ***/config/database.php в строке 16
error_reporting(E_ALL);
ini_set('display_errors', 1);
Ответ 6
Когда я был знаком с Linux. Обычно я нашел эту ошибку с моим проектом Laravel.
Белые ошибки означают ошибку, у нее могут быть проблемы с разрешением или ошибки.
Вам просто нужно выполнить два шага и работать как чемпион:)
(1) Дайте разрешение. Запустите эту команду из корневой директории вашего проекта.
(a) sudo chmod 777 -R storage
(b) sudo chmod bootstrap/cache
(2) Если вы клонировали проект или вытаскивали из github, запустите
composer install
(3) Настройте файл .env правильно, и ваш проект будет работать.
Ответ 7
Я боролся с аналогичной проблемой на сервере CentOS. Использование сервиса php artisan и доступ к нему через порт 8000 на локальном компьютере работало нормально, но я не мог заставить мои удаленные компьютеры загружать определенное представление. Я мог бы вернуть строки в порядке, и некоторые виды загружались. Некоторое время я преследовал свой хвост на разрешениях, прежде чем я понял, что это проблема SELinux. Я просто настроил его на принудительное выполнение, и он сработал. Надеюсь, что это поможет кому-то другому, который может столкнуться с одной и той же проблемой.
setenforce permissive
Ответ 8
В моем случае я много раз устанавливал laravel
, и я уверен, что разрешение на запись в папку было дано правильно.
Как и большинство ответов выше:
sudo chmod 777 -R storage bootstrap
Ошибка в том, что моя конфигурация nginx исходит из официальной документации.
Я изменил доменное имя только после копирования ,, затем я получил пустую страницу. Я попытался перезапустить nginx
и php-fpm
, но у меня не получилось.
Наконец, я добавил эту конфигурацию линии, чтобы решить проблему.
location ~ \.php$ {
# same as documentation ...
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Я надеюсь, что могу помочь другим.
Ответ 9
У меня также есть еще один вариант, по которому может возникнуть проблема с пустой страницей. Если вы работаете в рабочем режиме и кэшировали свои файлы конфигурации с помощью php artisan (config: cache), попробуйте удалить файл кэша, выполнив:
php artisan config:clear
или удалите его вручную (bootstrap/cache/config.php)
Ответ 10
У меня есть некоторые проблемы, чтобы настроить его в машине бродяг. Для меня действительно работает:
chmod -R o+w app/storage/
из машины Вагранта.
Ссылка: https://laracasts.com/lessons/vagrant-and-laravel
Ответ 11
Еще одна вещь, которая может вызвать WSOD, - это отсутствие ключевого слова "return", например:
return View::make('yourview');
в отличие от
View::make('yourview');
Ответ 12
Иногда это потому, что для laravel 5.1 требуется PHP >= 5.5.9. Обновление php решит проблему.
Ответ 13
Странно для меня, но в моем случае мне пришлось очистить кеш laravel, чтобы решить проблему.
Ответ 14
Я также столкнулся с той же проблемой после composer update
Я попытался установить composer required monolog/monolog
тоже, но не работал.
Затем я удалил каталог /vendor и запустил composer install
и работал как обычно.
в основном это должно было вернуть мой монолог и другие стабильные версии пакетов назад к предыдущей. так что лучше не composer update
то, что я заметил, сравнивая обе папки /vendor и обнаружил, что эти файлы classes
в /vendor/monolog/monolog/src/Handler
отсутствуют после обновления composer.
Ответ 15
Другой проблемой с тем же поведением является использование Laravel 3 с PHP 5.5.x. Вы должны изменить имя функции laravel "yield(), потому что это зарезервированное слово в php 5.5
Ответ 16
Причина может быть Middleware
, если вы забудете положить следующий код в конец функции handle
return $next($request);
Ответ 17
У меня также была такая же ошибка, когда я начинал первый раз на laravel + Ubuntu 14.04
Я просто щелкнул правой кнопкой мыши по папке загрузки и хранения → > Свойства → > Разрешение → Другие Доступ → > изменить его на "Создать и удалить файлы" Изменить разрешение для вложенных файлов
Спасибо
Ответ 18
Получил это из форумов 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;
Ответ 19
У меня такая же проблема. Я уже меняю папку chmod на папку Storage. Заполните настройки базы данных в .env, но проблему не устранили. Я использовал Laravel 5.5, и я использовал PHP 5.6, чтобы исправить это, я пошел (cpanel-> PHP Selector), и я перешел на PHP 7.1, и проблема решена.
Ответ 20
В обычных случаях ошибки должны регистрироваться, если только
Скрипт не может записать в файл журнала
Или произошла ошибка при проверке журналов сервера приложений более высокого уровня, таких как Appache || Nginx
Или это ограничения ресурсов Как настройки PHP ini
memory_limit
max_input_time
max_execution_time
Или лимит ОС и тд
Ответ 21
Помимо проблем с разрешениями в хранилище и папке кэша, а также проблем с версией php, могут быть и другие причины для отображения пустой страницы без каких-либо сообщений об ошибках.
Например, у меня было сообщение об ошибке redeclare без какого-либо журнала и с пустой белой страницей. Был конфликт между моей собственной вспомогательной функцией и функцией продавца.
Я предлагаю в качестве отправной точки, запустить команды artisan
. например:
php artisan cache:clear
Если возникла проблема, она будет запрошена в терминале, и вы получите подсказку, и вы можете поискать решение в Google.
Ответ 22
Выполнение этой команды решило это для меня:
php artisan view:clear
Я думаю, что пустая страница с ошибками была как-то кеширована. Пришлось очистить кеши.
Ответ 23
Пустой экран также возникает, когда ваше приложение Laravel пытается отобразить слишком много информации, и срабатывает ограничение PHP (например, отображение десятков тысяч записей базы данных на одной странице). Хуже всего то, что вы не увидите никаких ошибок в журналах Laravel. Вы, вероятно, также не увидите ошибок в логах PHP FPM. Вы можете найти ошибки в журналах вашего http-сервера, например, nginx выдает что-то вроде FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted
.
Краткий совет: добавьте ->limit(1000)
где 1000
- это ваш предел, для вашего объекта запроса.
Ответ 24
Я столкнулся с этой проблемой, когда попытался запустить приложение Laravel 5.8 на своем сервере, загружая из локальной разработки с помощью Vagrant Homestead. Через некоторое время я выяснил, что поддомен dev на живом сервере, на котором я работал, был каким-то образом установлен на PHP 5.6.
cPanel> MultiPHP Manager> Установить на PHP 7.2
исправил это для меня. Надеюсь, это может кому-то помочь.
Ответ 25
используйте этот .htaccess, чтобы решить
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>
Ответ 26
Лицом к пустому экрану в Laravel 5.8. Кажется, что все нормально с хранилищем и папкой начальной загрузки с 777 правами. На
php artisan cache:clear
Это показывает проблему, это были Пробелы в Приложении Имя файла .env
Ответ 27
Там может быть много причин за пустым экраном без ошибок. Я сталкивался с этой проблемой много раз, когда хочу загрузить проект laravel на виртуальный хостинг.
Причина: неверная версия PHP
В моем случае проблема была из-за неправильной версии php. У меня была версия php 7.1 на локальном компьютере, где, как и в cpanel на виртуальном хостинге, была версия php 5.6. Переключение версии с 5.6 до 7.1 работало для меня.
Вы можете изменить версию php в cpanel из менеджера multiphp, доступного на домашней странице cpanel.
Ответ 28
в моем случае проблема "ЧЕРНЫЙ БЕЛЫЙ ЭКРАН" была такой же простой, как опечатка или неправильный символ в файле env. Я реализовывал socialite, поэтому, когда я настраивал учетные данные .env для Google+, вот так:
G+_CLIENT_ID = Your G+ Client ID
G+_CLIENT_SECRET = Your G+ Client secret
G+_REDIRECT = 'http://localhost:8000/callback/google'
Но файл .env не может использовать знак "+", поэтому я должен сделать это исправление:
GOOGLE_CLIENT_ID = Your G+ Client ID
GOOGLE_CLIENT_SECRET = Your G+ Client secret
GOOGLE_REDIRECT = 'http://localhost:8000/callback/google'
Я надеюсь, что это поможет вам найти глупую ошибку...
Ответ 29
В моем случае перезапуск apache устранил проблему.
для Ubuntu/Debian:
sudo service apache2 restart
Ответ 30
Это изменение работает для моего локального сервера 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