오류 수정 방법: 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 사용자로 변경해야 합니다.
- VM에서 벗어나다
- 콘솔을 사용하여 동기화된 폴더(vagrant)로 이동합니다.
- sudo chown - R $USER: www-데이터 스토리지
- 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://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
이거 먹어봐
- cd /var/www/module
- setenforce 0(설정)
- 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 。
- 된 모든 파일 :
rm bootstrap/cache/*.php
" " " 를 .
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
이 문제는 저장소의 하위 폴더인 로그 폴더에 대한 쓰기 권한이 없기 때문에 발생한다는 것은 이미 알고 계실 것입니다.
이 문제를 해결하기 위해 다음 단계를 거쳤습니다.
- 작성자 업데이트
sudo composer self-update
- 저장소 폴더 쓰기 권한 변경
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
'source' 카테고리의 다른 글
JavaScript의 .trim()이 IE에서 작동하지 않음 (0) | 2022.11.04 |
---|---|
php에서 내 웹사이트의 모든 쿠키를 삭제하는 방법 (0) | 2022.10.25 |
자연어 처리를 위한 Java 또는 Python (0) | 2022.10.25 |
Brew를 통해 MySQL을 설치한 후 PID 파일을 업데이트하지 않고 서버가 종료되었습니다.라는 오류가 나타납니다. (0) | 2022.10.25 |
URL에 대한 최적의 데이터베이스 필드 유형 (0) | 2022.10.25 |