it-roy-ru.com

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
99
Mico

Апаш

этот ответ описывает или помогает вашей ситуации? Обновление до 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

Ларавел 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

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

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

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

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

Sudo chmod -R 777 начальная загрузка/кэш-память

  • Переименовать .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'),

22
Mukesh Chapagain

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

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

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

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

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

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

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

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

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

composer install

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

5
Vikash

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

setenforce permissive
4
Kamkat86

В моем случае я много раз устанавливал 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;
}

Я надеюсь, что могу помочь другим.

2
qskane

Я также столкнулся с той же проблемой после выполнения composer update

Я пытался установить composer required monolog/monolog тоже, но не сработало.

Затем я удалил каталог/vendor и запустил composer install и работал как обычно.  

в основном это должно было вернуть мой монолог и другие стабильные версии пакетов назад к предыдущей. так что лучше не composer update

то, что я заметил, сравнивая обе папки/vendor и обнаружил, что эти файлы classes в /vendor/monolog/monolog/src/Handler отсутствуют после обновления композитора.

1
Amit Shah

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

1
antongorodezkiy

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

chmod -R o+w app/storage/ 

изнутри бродячей машины.

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

1
gvsrepins

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

return View::make('yourview');

в отличие от 

View::make('yourview');

1
emragins

У меня также есть еще один вариант, по которому может возникнуть проблема с пустой страницей. Если вы работаете в рабочем режиме и кэшировали свои файлы конфигурации с помощью php artisan (config: cache), попробуйте удалить файл кэша, выполнив:

php artisan config:clear

или удалите его вручную (bootstrap/cache/config.php)

1
Boris Tetřev

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

1
Kevin

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

0
Hernan

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

return $next($request);
0
Farid Movsumov

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

Спасибо 

0
user1846871

Помимо проблем с разрешениями в хранилище и папке кэша, а также проблем с версией php, могут быть и другие причины для отображения пустой страницы без каких-либо сообщений об ошибках.

Например, у меня было сообщение об ошибке redeclare без какого-либо журнала и с пустой белой страницей . Был конфликт между моей собственной вспомогательной функцией и функцией вендора.

Я предлагаю в качестве отправной точки, запускать команды artisan. например:

php artisan cache:clear

Если возникла проблема, она будет запрошена в терминале, и вы получите Clue, и вы можете поискать решение в Google.

0
Khalil Laleh

Я столкнулся с этой проблемой, когда попытался запустить на своем сервере приложение Laravel 5.8, загружая из локальной разработки с помощью Vagrant Homestead. Через некоторое время я выяснил, что субдомен dev на работающем мной живом сервере был каким-то образом установлен на PHP 5.6.

cPanel> MultiPHP Manager> Установить на PHP 7.2

исправил это для меня. Надеюсь, это может кому-то помочь.

0
Inigo

используйте это .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>
0
Kaushik Dey

Выполнение этой команды решило это для меня:

php artisan view:clear

Я думаю, что пустая страница с ошибками была как-то кеширована. Пришлось очистить кеши.

0
Andrew

Пустой экран также возникает, когда ваше приложение 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 - ваш лимит, для вашего объекта запроса.

0
f055

Получил это на форумах 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;

0
Ben Wilson

У меня такая же проблема. Я уже меняю папку chmod на папку Storage. заполнить настройки базы данных в .env, но не устранил проблему . Я использовал Laravel 5.5 и PHP 5.6, чтобы исправить это, я перешел к (cpanel-> PHP Selector) и изменил на PHP 7.1 И проблема решена.

0
Abed Putra

В обычных случаях ошибки должны регистрироваться Если только

Скрипт не может записать в файл журнала

  • проверь путь
  • разрешений

Или произошла ошибка при проверке журналов сервера приложений более высокого уровня, таких как Appache || Nginx

Или это ограничения ресурсов Как PHP настройки ini

memory_limit
max_input_time
max_execution_time

Или лимит ОС и так далее 

0
Bdwey