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 ответа:
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/
изнутри бродячей машины.
еще одна вещь, которая может вызвать WSOD отсутствует ключевое слово "return", как в:
return View::make('yourview');
в противоположность
View::make('yourview');
другая проблема с тем же поведением-использование Laravel 3 с PHP 5.5.x. вы должны изменить имя некоторой функции laravel " yield (), потому что это зарезервированное слово в php 5.5
причина может быть
Middleware
Если вы забыли поставить следующий код в конецhandle
функцииreturn $next($request);
Я также получаю ту же ошибку, когда я начинаю первый раз на 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