[php] 오류 : laravel.log를 열 수 없습니다?

나는 laravel에서 아주 새롭고 사실 첫 프로젝트를 만들려고합니다. 어떤 이유로 든이 오류가 계속 발생합니다 (아직 코딩을 시작하지 않았습니다)

Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423

나는 이것이 권한과 관련이 있지만 chmod -R 775 storage전혀 도움이되지 않는다는 것을 읽었습니다 .

권한



답변

디렉토리를 777로 설정하지 마십시오 . 디렉토리 소유권을 변경해야합니다. 소유자로 로그인 한 현재 사용자와 웹 서버 사용자 (www-data, apache, …)를 그룹으로 설정하십시오. 당신은 이것을 시도 할 수 있습니다 :

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

그런 다음 디렉토리 권한을 설정하려면 다음을 시도하십시오.

chmod -R 775 storage
chmod -R 775 bootstrap/cache

최신 정보:

웹 서버 사용자 및 그룹은 웹 서버 및 OS에 따라 다릅니다. 웹 서버 사용자 및 그룹이 무엇인지 파악하려면 다음 명령을 사용하십시오. nginx 사용의 경우 :

ps aux|grep nginx|grep -v grep

아파치 사용 :

ps aux | egrep '(apache|httpd)'


답변

라이브 서버의 디렉토리에는 777을 사용하지 말고 자신의 컴퓨터에서는 775 이상을 수행해야합니다.

chmod -R 775 storage

방법

7 - Owner can write
7 - Group can write
5 - Others cannot write!

웹 서버가 Vagrant로 실행되지 않으면 웹 서버에 쓸 수 없으므로 두 가지 옵션이 있습니다.

chmod -R 777 storage

또는 그룹을 웹 서버 사용자로 변경하십시오 www-data.

chown -R vagrant:www-data storage


답변

이 문제를 해결하려면 디렉토리의 소유권을 웹 서버가 사용하는 unix 사용자로 변경해야합니다.

  1. VM에서 나가
  2. 콘솔을 사용하여 동기화 된 폴더로 이동하십시오 (방랑자)
  3. sudo chown -R $ USER : www-data 스토리지
  4. chmod -R 775 저장

VM 사용자를 사용하여 VM 내에서 프로젝트를 만들었지 만 폴더는 실제 컴퓨터의 사용자에게 속합니다. 그래서 시도 할 때

이제 작동합니다.

이걸 알아내는 데 도움이 된 모든 사람들에게 감사합니다.

편집하다:

실제로, 그것은 여전히 ​​작동하지 않고, 여전히 “허가 거부”문제를 주었다.

여기 내가 한 일이 있습니다. Vagrantfile을 다음과 같이 수정했습니다.

config.vm.synced_folder "./app","/var/www/", create:true,
:owner => "vagrant",
:group => "www-data",
:mount_options => ["dmode=775","fmode=664"]


답변

SELinux 일 수도 있습니다. (Centos, RedHat)

터미널에서 SElinux의 상태를 확인하십시오.

$ sestatus

상태가 활성화되면 SElinux를 비활성화하는 명령을 작성하십시오.

$ setenforce Permissive

또는이 명령을 실행할 수 있습니다

$ sudo setenforce 0


답변

storage및 의 권한을 조정해야합니다 bootstrap/cache.

  • cd 라 라벨 프로젝트에
  • sudo chmod -R 755 storage
  • sudo chmod -R 755 bootstrap/cache

755가 작동하지 않으면 777을 시도 할 수 있습니다. 777은 안전하지 않습니다!

웹 서버 설정 방법에 따라 권한을 더 구체적으로 지정할 수 있으며 웹 서버 사용자에게만 권한을 부여 할 수 있습니다. WEB SERVER NAME Laravel file permissions자세한 내용은 Google 을 참조하십시오.

글을 쓰는 시점에서 이것은 Laravel 5.4 용입니다.


답변

추가 composer.json

"scripts": {
    "post-install-cmd": [
          "chgrp -R www-data storage bootstrap/cache",
          "chmod -R ug+rwx storage bootstrap/cache"
     ]
}

composer install


답변

다음 명령을 실행하면 sudo시스템 시작에 따라 명령을 시작할 때 추가 할 수 있습니다 .

chmod -R 775 storage/framework
chmod -R 775 storage/logs
chmod -R 775 bootstrap/cache