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

88

Мой сайт 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
  • 0
    попробуйте поставить новую чистую установку Laravel на laravel.mydomain.com - тогда это работает?
  • 0
    ХММ, я пытался создать проект с композитором, и я, по-видимому, скучаю по openssl. Есть ли простой способ добавить его позже или мне нужно перекомпилировать мой PHP с текущими параметрами конфигурации + --with-openssl?
Показать ещё 1 комментарий
Теги:
frameworks
laravel-4

17 ответов

203
Лучший ответ

Apache

Предоставляет ли этот ответ описание вашей вашей ситуации? Обновление 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
  • 8
    Похоже, это была проблема с разрешением. chmodding каталог laravel заставил его работать.
  • 2
    @fideloper Этот ответ действительно спас мой день. Получал WSOD, и нигде ничего не появлялось в логах. chmodding приложение / хранилище позаботился об этом. Я даю тебе виртуальную шляпу!
Показать ещё 13 комментариев
65

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

$ sudo chmod -R o+w storage/
  • 0
    Престижность! Решил мою проблему для L5 на сервере Ubuntu 14.04.
  • 0
    У меня тоже работало, на Mac OS X 10.10.3
Показать ещё 2 комментария
19

Следующие шаги решили проблему с белым экраном на моем 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'),

  • 0
    Это решило проблему и для меня. Благодарю.
  • 0
    Это тоже решено. Спасибо
Показать ещё 1 комментарий
14

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

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
  • 0
    Это было на самом деле то, что мне было нужно, потому что по какой-то причине на работе сервера (Plesk) ничего не записывалось в журнал ошибок и ничего в журнал laravel, добавление этого показало, что на самом деле это был отсутствующий файл, который вызывал мой пробел. 500 экран, спасибо большое!
  • 0
    У меня тоже был белый экран и вообще никаких ошибок. Все разрешения и все было идеально. Этот ответ помог мне увидеть, что происходит на самом деле. Благодарю.
5

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

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

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

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

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

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

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

composer install

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

  • 0
    Шаг (2) отсутствовал в моей установке. Я клонировал проект, думая, что в нем есть все необходимые файлы, чтобы он работал «из коробки». У меня все еще были проблемы, но это был важный шаг.
2

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

setenforce permissive
  • 0
    Это помогло мне каждый раз
1

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

1

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

return View::make('yourview');

в отличие от

View::make('yourview');

1

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

chmod -R o+w app/storage/

из машины Вагранта.

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

0

Получил это из форумов 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

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

Спасибо

0

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

0

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

return $next($request);
0

Это изменение работает для моего локального сервера 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
  • 0
    На веб-сервере не рекомендуется устанавливать разрешение «777» для ваших файлов и папок, поскольку оно позволяет любому добавлять вредоносный код на ваш сервер. Однако в некоторых случаях вам нужно будет установить разрешения 777, прежде чем вы сможете загрузить любой файл на сервер (например, загрузка изображений в WordPress). Maketecheasier.com/file-permissions-what-does-chmod-777-means
0

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

-3

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

sudo service apache2 restart
Сообщество Overcoder
Наверх
Меню