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

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

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

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

heres мой .реврайт:

$ cat /var/sites/laravel/public/.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [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

24 ответов


Apache

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

что Laravel

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

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

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

на серверах 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. Это зависит от вашего хостинг и настройка!

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 загрузочное / кэш-хранилище

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

php artisan ключ: генерировать

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

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

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

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

to

'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);

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

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 файл правильно, и ваш проект будет работать.


Я боролся с аналогичной проблемой на сервере CentOS. Использование php artisan serv и доступ к нему через порт 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 Я просто щелкните правой кнопкой мыши на bootstrap и папке хранения > > > свойства > > > разрешение> > другие доступ > > > изменить его на" создание и удаление файлов " изменить разрешение для вложенных файлов

спасибо


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

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

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

to

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


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


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

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

  • проверьте, что это путь
  • разрешения

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

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

memory_limit
max_input_time
max_execution_time

или OS limit и так далее


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

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

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

php artisan cache:clear

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


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

php artisan view:clear

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


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


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

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


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

php artisan config:clear

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


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

sudo service apache2 restart

это изменение работает для моего сервера Ubuntu localhost 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