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 ^(.*)/$ / [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
24 96

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 вы можете работать как пользователь "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 bootstrap / Cache storage

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

php artisan key: generate

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

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

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

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

для тех, кто получает пустую страницу даже после того, как хранилище доступно для отображения ошибок, поместите эти две строки в первые строки 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 Я просто щелкните правой кнопкой мыши на папке начальной загрузки и хранения > > > свойства > > > разрешение> > другие доступ > > > изменить его на "создание и удаление файлов" изменить разрешение для вложенных файлов

спасибо

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

У меня такая же проблема. Я уже меняю папку 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

или предел ОС и так далее

помимо проблем с разрешениями в папке хранения и кэша и проблем с версией 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

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