예외 처리기에 오류가 있습니다. -라 라벨


118

Laravel 설치 관련 질문입니다. 공개용 Unix 서버 설정이 있습니다.

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.org
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 즉 http://mydomain.org/test.php 에서 test.php가 포함 된 문서를 잘 제공 할 수 있습니다 .

<?php echo 'test';

잘 작동합니다.

bash에서 Composer를 통해 Laravel을 설치하고 파일을 살펴 봅니다.

# 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 스플래시 화면이 표시 될 것으로 예상합니다.

또한 로그 파일에는 아무것도 표시되지 않습니다.


PHP 버전? 서버 로그인을 확인 /var/log하고 그들이 무슨 말을하는지 볼 수 있습니까?
Jason Lewis

3
Laravel의 오류 로그는 app/storage/logs어떻습니까? 그리고 모든 스토리지 디렉토리를 쓸 수 있습니까?
Jason Lewis

1
@Jason 당신이 말했듯이-그것은 스토리지 디렉토리였습니다. 스토리지에 chmod -R 757이 있고 스플래시 화면을 칠 수 있습니다. +1 감사합니다.
cookie

답변:


246

더 안전한 옵션은 스토리지 디렉토리 그룹을 웹 서버 그룹으로 변경하고 (일반적으로 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 앱 / 스토리지
hlev

5
Mac에서는 위의 명령이 작동하지 않았습니다. 그러나이 명령을했다 : sudo chown -R _www app/storage(아파치 서버 이름 필요한 경우에 _www 대체)
레오 Galleguillos

4
그리고 나는 그룹 주어야했다 쓰기 권한 :chmod -R g+w app/storage
다니엘 AA Pelsmaeker

감사합니다. 도움이되었습니다. 그러나 나중에 'php artisan migrate ...'를 실행하려고 할 때 문제가 발생합니다- '/ app / storage /'폴더에 'Permission Denied'오류가 발생하므로 모든 권한을 소유자에게 수정합니다. 'www-data', '/bootstrap/compiled.php'권한 오류가 발생할 때까지. 그것도 소유자 'www-data'로 설정하거나 모두 0777로 설정하는 것이 좋은 생각입니까?
peedeeaay

3
(y), 변화에 감사드립니다! chmod를 777 : 너무 많은 아이들이 어린 시절을 망쳐
MA의 Hossain 토누을

17

라 라벨 5.2

chmod -R 777 스토리지

이전 Laravel chmod 777 앱 / 스토리지 / *

자신의 계정이 아닌 다른 사용자 계정이없는 합리적으로 잠겨있는 전용 서버가있는 경우 777은 다른 어떤 것보다 더 많은 보안 위험을 초래해서는 안됩니다. 악의적 인 사용자가이를 이용하려면 다른 취약점이 있어야하며, 그 시점에서 777 권한은 어차피 의심 스러울 것입니다. 그러나 신뢰하지 않는 다른 사용자와 공유 서버에있는 경우 더 복잡한 권한을 조사하거나 호스팅 제공 업체가 이미 격리를 제공했는지 확인해야합니다.

그들은 이것을 빠른 시작 문서에 넣어야하고 다양한 설정에 대한 예제를 제공해야합니다. 더 많은 디렉토리가 자동으로 생성되므로 첫 번째로드 후에 다시 실행해야 할 수도 있습니다. 로그에서 쓰기 오류를 찾습니다.

또한 DocumentRoot는 / path / to / laravel-project / public이어야합니다.


4
동의, 또는 더 장황한 오류 메시지
homerjam 2014-06-10

3
그들은해야 하지 그는 Laravel 응용 프로그램을 실행하는 올바른 방법이 아니기 때문에 www.domain.com/project/public로 이동을 알려줍니다. public / * 만 제공하도록 웹 서버를 설정해야합니다. public / index.php는 전체 애플리케이션의 유일한 진입 점입니다. Apache로 아주 쉽게 할 수 있습니다. nginx를 사용하는 경우 수행중인 작업을 알고있을 것입니다. 저렴한 cPanel 호스트를 사용하는 경우 (내 애도) 공개를 가리 키도록 웹 루트를 설정하는 것도 쉽습니다.
borfast 2014 년

11
심각하게 777 ... 보안 원칙의 단지 명백한 위반되는 제안
ftrotter

1
나는 그것이 1 년이라는 것을 알고 있지만 777은 @ftrotter가 말한 것처럼 모든 보안 규칙을 위반하는 최악의 방법입니다.
Zac Grierson

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 구성 이었지만 귀하의 경우에는 무엇이든 될 수 있습니다.

이 정보가 누군가에게 도움이되기를 바랍니다. 아니면 다음에 여기에 올 때마다 제 답을 찾을 수있을 것입니다.


감사. 나는 이것을 사용하여 내 문제를 발견했습니다 could not find driver. 그런 다음 필요한 php-mysql동안 php7.0-mysql을 설치했음을 알았습니다 . -이 링크는 또한 나에게 도움이 digitalocean.com/community/tutorials/...
Udayraj Deshmukh을

0

이를 해결하는 가장 짧은 방법은 sudo로 장인을 시작하는 것입니다. 이것은 장인에게 필요한 모든 권한을 제공하고 보안 문제도 일으키지 않을 것입니다.

그래서 대신 장인을 시작하십시오 :

$ php artisan serve

사용해보십시오 :

$ sudo php artisan serve 

따라서 권한을 변경할 필요가 없습니다.


-5

동일한 문제가 있습니다. chmod 명령 줄 을 사용하여 디렉토리 app / storage에서 775로 권한을 변경합니다.


5
이것은 이미 현재 허용 대답으로 지적되고있다 (정확하게 완전히 정답 될 디렉토리의 그룹을 설정하는 방법에 대한 그 대답의 정보가 필요합니다.)
매트 깁슨을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.