Ошибка в обработчике исключений. - Ларавел

107

Это вопрос, связанный с Laravel-install. У меня есть настройка сервера Unix с открытым доступом:

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/mydomain"
ServerName mydomain.org
ServerAlias www.mydomain.org
ErrorLog "/var/log/mydomain.org-error_log"
CustomLog "/var/log/mydomain.org-access_log" common
</VirtualHost>

Я могу подавать документы из /var/www/mydomain i.e http://mydomain.org/test.php с помощью test.php, содержащего:

<?php echo 'test';

отлично работает.

В bash, с помощью Laravel, установленного через Composer, и просмотра файлов:

# ls /var/www/mydomain/my-laravel-project

.gitattributes  CONTRIBUTING.md artisan         composer.json   phpunit.xml readme.md       vendor
.gitignore      app             bootstrap       composer.lock   public          server.php

Итак, когда я просматриваю:

http://mydomain.org/my-laravel-project/public/

почему мой отчет приложения:

Error in exception handler. 

в браузере - на белом белом экране? Я ожидаю увидеть заставку Laravel.

Кроме того, файлы журналов ничего не обнаруживают.

  • 0
    Версия PHP? Можете ли вы проверить журналы ваших серверов в /var/log и посмотреть, что, если что, они скажут.
  • 0
    @Jason PHP -v 5.4.26
Показать ещё 2 комментария
Теги:

6 ответов

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

Более безопасным вариантом будет изменение группы каталогов хранилища на группу веб-серверов (обычно apache или www-data, но это может различаться между различными операционными системами) и сохранять разрешения по каталогу как 775.

chgrp -R www-data app/storage

Или с chown.

chown -R :www-data app/storage

Затем убедитесь, что права на каталоги 775.

chmod -R 775 app/storage

На веб-сайте Laravel:

Laravel может потребоваться настроить один набор разрешений: папки в приложении/хранилище требуется доступ на запись веб-сервером.

  • 14
    Как правило, безопаснее изменить владельца группы на веб-сервере и не предоставлять «миру» полный доступ к вашим файлам. 775 по умолчанию для каталогов, так что этого должно быть достаточно. chgrp -R apache приложение / хранилище
  • 5
    На Mac вышеперечисленные команды не работают. Однако эта команда выполнила: sudo chown -R _www app/storage (замените _www именем вашего сервера Apache, если необходимо)
Показать ещё 11 комментариев
18

Laravel 5.2

chmod -R 777 storage

Старые Ларавел chmod 777 app/storage/*

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

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

Также ваш DocumentRoot должен быть/path/to/laravel-project/public

  • 4
    Согласен, а еще лучше более подробное сообщение об ошибке
  • 3
    Они не должны просить вас перейти на www.domain.com/project/public, потому что это неправильный способ запуска приложения Laravel. Вы должны настроить свой веб-сервер для обслуживания public / * и ничего более, при этом public / index.php является единственной точкой входа для всего приложения. Вы можете сделать это очень легко с Apache; если вы используете nginx, то вы, вероятно, знаете, что делаете. И если вы используете дешевый хост cPanel (мои соболезнования), то также легко настроить корневой веб-узел, чтобы он указывал на общедоступный.
Показать ещё 2 комментария
2

Я удалил старые сеансы внутри папки app/storage/sessions и дал 775 разрешение app/storage после этого работать как огонь!

chmod -R 775 app/storage

Удачи!

1

Победившая группа прошла это долгое время назад, но все же у меня есть еще один совет по поводу "Ошибка в обработчике исключений".

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

Я запустил его, и он дал мне эту ошибку, и я не мог определить проблему до тех пор, пока не отредактировал файл artisan в корневом каталоге моего проекта и не добавлю оператор try catch:

try {
    $artisan = Illuminate\Console\Application::start($app);
}
catch (Exception $e)
{
    dd($e->getMessage());
}

В этот момент я наконец увидел просветляющее сообщение:

string(41) "Connection refused [tcp://127.0.0.1:6379]"

который в моем случае был плохой настройкой redis, но в вашем случае это могло быть что угодно.

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

  • 0
    Благодарю. Я обнаружил свою проблему, используя это - он напечатал could not find driver . А потом я узнал, что установил php-mysql , хотя php7.0-mysql был необходим. Эта ссылка также помогла мне - digitalocean.com/community/tutorials/…
0

Самый короткий способ решить это - начать ремесленник с помощью sudo. Это даст мастеру все необходимые разрешения и не вызовет никаких проблем с безопасностью.

поэтому вместо запуска artisan выполните:

$ php artisan serve

попробуйте использовать:

$ sudo php artisan serve 

поэтому вам не придется делать какие-либо изменения в разрешении

-4

У меня такая же проблема, я просто изменяю разрешение из приложения/хранилища каталога на 775 с помощью командной строки chmod

  • 5
    Это уже указано в принятом в настоящее время ответе (и для этого потребуется информация из этого ответа о правильной настройке группы каталога, чтобы он был полностью правильным).

Ещё вопросы

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