source

오류 수정 방법: laravel.log를 열 수 없습니다.

nicesource 2022. 10. 25. 17:41
반응형

오류 수정 방법: laravel.log를 열 수 없습니다.

사실 저는 라라벨에 처음 와서 제 첫 번째 프로젝트를 만들려고 합니다.어떤 이유로 이 에러가 계속 발생하고 있습니다(아직 코딩도 시작하지 않았습니다).

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

Apache 사용:

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. 콘솔을 사용하여 동기화된 폴더(vagrant)로 이동합니다.
  3. sudo chown - R $USER: www-데이터 스토리지
  4. chmod - R 775 스토리지

VM 사용자를 사용하여 VM 내에 프로젝트를 생성했는데 실제 컴퓨터 사용자 소유의 폴더였기 때문에 다음 작업을 수행하려고 하면

이제 됐다.

이 일을 해결하는데 도움을 준 모든 사람들 덕분에

편집:

사실, 여전히 작동되지 않았고, 여전히 "허락 거부" 문제가 발생했습니다.

이렇게 Vagrant 파일을 수정했습니다.

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

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

터미널의 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자세한 정보는.

글을 쓸 때, 이것은 Larabel 5.4를 위한 것입니다.

늦은 감이 있지만 누군가를 도울 수 있을 것 같아서 디렉토리 권한을 변경했습니다.

의 Laravel 가 Laravel에 합니다./var/www/html/디렉토리로 이동합니다.을 사용하다

cd /var/www/html/

'먹다'의 사용 을 바꿔주세요.storage/ ★★★★★★★★★★★★★★★★★」bootstrap/cache/디렉토리로 이동합니다.

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

「」의 경우.775설정해 .설정해 보세요.777이는 가장 완화된 허가이므로 주의하여 사용하십시오.)

sudo chmod -R 777 storage/
sudo chmod -R 777 bootstrap/cache/

cPanel: cPanel에서 단말기를 사용할 수 없는 경우 위의 디렉토리와 서브 디렉토리를 오른쪽 클릭하여 권한을 변경할 수 있습니다.

§에 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 

Larabel 컨텍스트 상의 모든 Centos 7 사용자에 대해 Selinux를 비활성화할 필요가 없습니다.다음 명령어를 실행하기만 하면 됩니다.

yum install policycoreutils-python -y # might not be necessary, try the below first

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache

restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules

마지막으로 호스트, IPS 및 가상 호스트가 모두 원격 액세스에 적합한지 확인하십시오.

Selinux는 root 사용자까지 접근을 제한하기 위해 고안되었습니다.그래서 적어도 일반론자의 개요에 따르면 보안 강화는 좋은 방법이 아닙니다.Selinux를 배우기 위한 링크가 많이 있지만 이 경우에는 필요하지도 않습니다.

cmd를 사용하는 경우

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

GUI를 사용하는 경우

먼저 프로젝트로 이동하여 스토리지를 마우스 오른쪽 버튼으로 클릭하고 속성을 확인한 후 권한 탭으로 이동합니다.

여기에 이미지 설명 입력

아래 코드를 사용하여 사용 권한 변경

sudo chmod -R 777 storage

파일 속성은 다음과 같습니다.

여기에 이미지 설명 입력

그런 다음 설정을 확인하고 larabel 명령을 실행합니다.

1- nginx 사용자 및 php-fpm 사용자 및 앱 소유자 사용자는 같아야 합니다.

명령어 run " " "sudo vi /etc/nginx/nginx.conf다음 중 하나:

user nginx nginx;

명령어 run " " "sudo vi /etc/php-fpm.d/www.conf다음 중 하나:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx

nginx 및 php-fpm 서비스를 재시작합니다.

아래 명령어 실행

sudo chown nginx:nginx -R "your_project_path"

2- 프로젝트 경로에서 다음 명령을 실행하여 파일 SELinux 보안 컨텍스트 변경

chcon -R -t httpd_sys_content_t .
chcon -R -t httpd_sys_rw_content_t .

이 문제에 대해서는 여러 명령을 시도했지만 문제 해결에 도움이 됩니다.

php artisan route:clear
php artisan config:clear
php artisan cache:clear

다른 사람들에게도 도움이 됐으면 좋겠어요.

Laravel ACL로 .storage ★★★★★★★★★★★★★★★★★」cache디렉토리에서 웹 서버 사용자가 읽고 쓸 수 있도록 합니다.을 열고합니다.

HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)

sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/

참고 자료:

https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd

https://linux.die.net/man/1/setfacl

Project root 디렉토리에서 다음 명령을 실행합니다.

sudo chmod -R 775 storage
sudo chown -R $USER:www-data storage

최대 사용자가 파일 권한 777 또는 775를 변경할 것을 제안하고 있는데, 저는 이 문제를 해결하기 위한 적절한 접근법이 아니라고 생각합니다.소유권 변경만 하면 됩니다.storage그리고.bootstrap폴더입니다.

아래 이미지에서 모든 파일/폴더가 root 사용자 아래에 있는 것을 알 수 있습니다(스토리지 및 부트스트랩 제외). 그러나 저는 관리자(소유권 변경 전)로 로그인했기 때문에 항상 권한이 거부됩니다.그래서 이 두 폴더의 소유권을 관리자로 변경해야 합니다.

그러면 프로젝트 디렉토리로 이동하여 다음 명령을 실행합니다. sudo chown -R yourusername:www-data storage,sudo chmod -R ug+w storage,sudo chown -R yourusername:www-data bootstrap,sudo chmod -R ug+w bootstrap

이거 먹어봐

  1. cd /var/www/module
  2. setenforce 0(설정)
  3. service httpd restart

Apache 를 실행하고 있는 경우는, 다음과 같이 합니다.

sudo chown -R $USER:www-data my_laravel_project/

sudo chmod -R 775 my_laravel_project/storage

sudo chmod -R 775 my_laravel_project/bootstrap/cache

cd my_laravel_project

php artisan optimize:clear

이 솔루션은 Larabel 5.5 전용입니다.

몇 개의 폴더로 권한을 변경해야 합니다.chmod - R - 777 storage / logs chmod - R - 777 storage / framework the project75 7775 또는 765는 내 프로젝트에서 작동하지 않았습니다.

chmod -R 775 bootstrap/cache 

또한 프로젝트 폴더의 소유권은 다음과 같아야 합니다(현재 사용자). (웹 서버 사용자)

폴더 권한을 777로 변경할 생각은 없었습니다.제가 이 문제를 해결한 방법은 이렇습니다.

먼저 로컬 머신에서 웹 서버를 실행하고 있는 사용자를 변경했습니다(nginx를 실행하고 있지만 원칙은 어디에나 적용됩니다).

$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload

그 후, 나는 또 다른 것을 만들었다.index.php아래 줄서다public/폴더는 누가 내 php-fpm 버전을 실행하고 있는지, 그리고 그것을 변경하는 방법을 알아내기 위한 것입니다.

<?php
phpinfo();
?>

페이지를 새로고침하고 있는 중에www-data(환경 섹션 아래) 사용자입니다.또, php 7.1을 실행하고 있는 것도 알게 되었습니다.사용자 변경을 진행했습니다.

$> sudo vim /etc/php/7.0/fpm/pool.d/www.conf 
#Look for www-data or the following variables: user, group, listen.user, listen.group.

마지막으로 폴더에 다음 권한을 부여했습니다.

sudo chmod -R 775 ./storage/

다음 간단한 방법을 사용하여 폴더의 소유자가 자신임을 확인했습니다.

ls -al

예를 들어 서버 및 php-fpm 사용자를 사용자 자신에게 설정하고 폴더를 루트별로 소유하면 이 문제가 계속 발생합니다.이 문제는 다음 작업을 수행했을 때 발생할 수 있습니다.sudo laravel new <project>뿌리로요.이 경우, 반드시 재귀적인 것을 사용해 주세요.chown프로젝트 명령어를 사용하여user:group설정을 지정합니다.대부분의 디폴트에서는www-data서버 및 php의 메인 설정입니다.이 경우 폴더가 외부로 이동하지 않도록 하는 것이 중요합니다.www-data의 범위입니다.

내 프로젝트는 내 홈 디렉토리에 설정됩니다.Ubuntu 16.04 및 Larabel 5.5의 경우

제 .bootstrap/cache/해서 내 을 : directory directory directory토 、 음음 、 음음 、 음 directory 、 음 directory directory directory directory directory 。

  1. 된 모든 파일 :rm bootstrap/cache/*.php
  2. " " " 를 .laravel.log 명령을 하여 파일에

    • chmod -R 775 storage

여기서 제안하는 건 뭐든 시도해 봤지만 성공하지 못했어

나에게 효과가 있었던 것은, 다음과 같습니다.

sudo chmod -R ugo+rw storage
sudo chmod -R ugo+rw storage/logs

Linux의 경우

sudo chown -R www-data:root /var/www/name-project-Laravel
sudo chmod 755 /var/www/name-project-Laravel/storage

Centos & Rockylinnux에서

chown root:nginx FOLDER_PROJECT -Rf
chmod 775 FOLDER_PROJECT -Rf
cd FOLDER_PROJECT
chmod 777 storage -Rf

setenforce 0

평가해주세요:)

다음 명령어를 통해서만 권한을 부여했기 때문에 수정했습니다.

코드 복사

sudo chmod -R 775 storage

수정은 다음을 추가하는 것이었습니다.

코드 복사

sudo chmod -R ugo+rw storage

이 문제는 저장소의 하위 폴더인 로그 폴더에 대한 쓰기 권한이 없기 때문에 발생한다는 것은 이미 알고 계실 것입니다.

이 문제를 해결하기 위해 다음 단계를 거쳤습니다.

  1. 작성자 업데이트
 sudo composer self-update
  1. 저장소 폴더 쓰기 권한 변경
 sudo chmod -R ugo+rw storage

이제 저장소 폴더에 drwxrwxrwx 사용 권한이 있어야 합니다.

사용 권한을 확인하려면 프로젝트 루트에서 다음 명령을 실행하십시오.

ls -l 

또, 상기의 순서 후에 다음의 에러가 발생했을 경우.

 ErrorException chdir(): No such file or directory (errno 2)

다음을 사용하여 프로젝트 루트 폴더에 public이라는 이름의 폴더를 만듭니다.

sudo mkdir public

ps. chmod 명령어에 대한 자세한 내용은 다음을 참조하십시오.

아래 명령어는 확실히 기능합니다.

sudo chmod -R ugo+rw storage

명령어를 작성하지 않거나 이 문제를 해결하기 위한 가장 간단한 방법을 제공하지 않습니다.

시스템을 다시 시작하고 다시 시도하십시오.

나에겐 일이고

언급URL : https://stackoverflow.com/questions/23411520/how-to-fix-error-laravel-log-could-not-be-opened

반응형