file_put_module - 스트림을 열지 못했습니다.권한 거부
디버깅을 위해 파일에 쿼리를 쓰려고 합니다.은 음음음음음음에 있습니다.database/execute.php
★★★★★★★★★★★★★★★★★★★★★★★★★★★★.database/queries.php
.
는 용하려합합 i i i i i를 사용하려고 합니다.file_put_contents('queries.txt', $query)
하지만 나는 점점
file_put_module(필수).txt) [기능]file-put-filename]: 스트림을 열지 못했습니다.권한 거부
는 ★★★★★★★★★★★★★★★★★★★★★★를 가지고 있다.queries.txt
chmod777로 해 주세요.이 은 무엇입니까?chmod'd 파일입니다슨문 ??
디렉토리 권한을 조정해 보십시오.
" " "를 실행합니다.chmod 777 database
에서) ('데이터베이스 폴더를 참조해 주세요.
이 디렉토리가 올바르게 chmod'd되면 아무도 이 디렉토리에 액세스할 수 없습니다.
또 다른 방법은 에코 "getcwd()"입니다.그러면 현재 디렉터리가 표시되며, '/something.../database/'이 아니면 'query'를 변경해야 합니다.txt'를 클릭하여 서버의 풀경로로 이동합니다.
만들 수 요.Apache (www-data)
「이것들」은 다음과 같습니다.
sudo chown -R www-data:www-data /var/www
렇그 that가 된다.file_put_contents
지금 당장 일하세요.그러나 보안을 강화하기 위해 다음과 같이 권한을 설정하는 것이 좋습니다.
find /var/www -type d -print0 | xargs -0 chmod 0755 # folder
find /var/www -type f -print0 | xargs -0 chmod 0644 # files
/var/www
합니다.
이러한 파일에 수동으로 쿼리를 쓸 필요가 없습니다.MySQL에는 로깅 지원이 내장되어 있으므로 개발 환경 내에서 로깅을 활성화하기만 하면 됩니다.
이 링크 stackoverflow-image save에서 정보를 수집하는 것은 chmod 777 및 사용자 azerafati 및 Loek Bergman에서는 동작하지 않습니다.
/etc/syslog/envars 파일 아래에 다음과 같은 정보가 표시됩니다.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Apache는 사용자 이름 'www-data'로 실행됩니다.
'0755'는 파일 소유자는 읽기/쓰기/삭제할 수 있지만 그룹 및 다른 사용자는 쓸 수 없음을 의미합니다.그래서 단말기에서 cd를 당신의 'folder' 폴더가 들어 있는 폴더에 넣습니다.다음으로 다음과 같이 입력합니다.
find images -type d -exec chmod 0755 {} \;
find images -type f -exec chmod 0755 {} \;
sudo chown -R www-data:www-data images
소유자를 변경하기 전에 먼저 사용 권한을 변경해야 합니다.메시지가 나타나면 비밀번호를 입력합니다.이미지 폴더의 'ww-data' 소유자가 됩니다.
업로드가 동작합니다.
매우 오래된 질문인 것은 알지만, 상세한 설명과 함께 좋은 해결책을 추가하고 싶었습니다.Ubuntu에 대해 시스템처럼 두 개의 스테이트먼트를 실행한 후 마법처럼 작동합니다.
Linux 에서의 권한은 3자리 숫자로 나타낼 수 있습니다.첫 번째 숫자는 파일 소유자의 권한을 정의합니다.두 번째 숫자는 특정 사용자 그룹의 권한입니다.세 번째 숫자는 그룹의 소유자 또는 구성원이 아닌 모든 사용자에 대한 권한을 정의합니다.
웹 서버는 그룹의 멤버인 ID를 사용하여 실행됩니다.웹 서버는 파일 및 디렉토리의 소유자와 동일한 ID로 실행해서는 안 됩니다.Ubuntu에서는 apache를 www-data라는 ID로 실행합니다.이 ID는 권한이 지정된 그룹의 멤버여야 합니다.
파일 내용을 변경할 디렉터리에 적절한 권한을 부여하려면 다음 명령을 실행합니다.
find %DIR% -type d -exec chmod 770 {} \;
이는 OP 질문에서 %ROOT%/데이터베이스 디렉토리에 대한 권한을 그에 따라 변경해야 한다는 것을 의미합니다.따라서 변경 또는 삭제해서는 안 되는 파일을 디렉토리 내에 두지 않는 것이 중요합니다.따라서 내용을 변경해야 하는 파일에 대해 별도의 디렉토리를 작성하는 것이 좋습니다.
디렉토리에 대한 읽기 권한(4)은 디렉토리 내의 메타데이터와 함께 모든 파일 및 디렉토리를 수집할 수 있음을 의미합니다.쓰기 권한(2)은 디렉토리의 내용을 변경할 수 있는 권한을 부여합니다.파일 추가 및 삭제, 권한 변경 등을 암시합니다.실행 권한(1)은 해당 디렉터리에 액세스할 권한이 있음을 의미합니다.후자가 없으면 디렉토리로 더 깊이 들어갈 수 없습니다.파일 내용을 변경해야 할 경우 웹 서버에는 읽기, 쓰기 및 실행 권한이 필요합니다.이를 위해서는 그룹 번호7이 필요합니다.
두 번째 문장은 OP에 관한 질문입니다.
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
문서를 읽고 쓸 수 있어야 하지만 파일을 실행할 필요는 없습니다.7은 파일의 소유자에게 주어지고 6은 그룹에 주어집니다.웹 서버의 내용을 변경하기 위해 웹 서버에 파일 실행 권한이 필요하지 않습니다.이러한 쓰기 권한은 해당 디렉터리의 파일에만 부여해야 합니다.
다른 모든 사용자에게 어떠한 권한도 부여해서는 안 됩니다.
파일을 변경할 필요가 없는 디렉토리의 경우 5개의 그룹 권한으로 충분합니다.권한에 대한 문서 및 몇 가지 예:
https://wiki.debian.org/Permissions
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
공유 Linux 호스팅을 사용하고 있는데 관리자가 php를 5.3으로 변경했을 때 "file_put_contents" 코드에 오류가 많이 발생했습니다.계획을 테스트해 보겠습니다.
호스트에 mytest와 같은 파일을 만듭니다.php, 이 코드를 입력하고 저장합니다.
<?php mail('Your-EMail','Email-Title','Email-Message'); ?>
URL "www.your-domain.com/mytest.php"을 한 번 열고 이메일을 확인합니다.mytest에서 입력한 정보가 포함된 e-메일이 호스트로부터 수신되어야 합니다.php, 송신자 이름을 확인합니다."Nobody"의 경우 "Permission Denied"에 대한 문제가 있습니다.그 이유는 정의되지 않은 것이 있기 때문입니다.또, 발신인명이 제 ID:iietj8qy@hostname5와 같은 경우입니다.netly.net 문제 없습니다.
관리자가 서버를 변경하고 호스트를 다시 설치했는데 문제가 해결되었다고 생각합니다.호스트 관리자에게 내가 말한 내용을 전달하면 답을 찾을 수 있을지도 모릅니다.
이 문제는 다음 순서로 해결할 수 있습니다.
1. $ php artisan cache:clear
2. $ sudo chmod -R 777 storage
3. $ composer dump-autoload
도움이 되었으면 좋겠다
로컬에서 서버로 git을 풀링하는 경우, 보기 파일 또는 다른 캐시 파일 때문에 캐시를 지울 필요가 있습니다.
php artisan cache:clear
git pull 전에 어플리케이션이 동작하고 있는 경우는, 그 트릭에 딱 맞는 경우가 있습니다.
이게 도움이 될 거야나한테는 통했어. 터미널에서 해봐
setenforce 0
Ubuntu를 사용하여 웹 호스팅 서비스가 아닌 로컬에서 페이지를 로드할 때 이 오류가 발생하는 경우,
앵무새(nautilus를했습니다.sudo nautilus
]> [ Settings ]> [ other ]> [ Properties ]> [ other allier ]에
이 캠맨드를 사용하여 스토리지/로그 및 로그 권한을 부여합니다.
sudo chmod -R 777 storage/logs storage/framework
권한 오류가 여전히 있는 경우 로그 기록 그룹에 권한을 부여하려면 이 작업을 수행하십시오.
sudo chmod g+w storage/logs
selinux가 적용으로 설정되어 있는 것이 문제였습니다.
계속 '스트림 오픈 실패'가 나왔어요Permission denied" 오류는 777로 변경되어 모든 부모 폴더가 Apache 사용자에 대한 실행 권한을 가지고 있는지 확인한 후에도 발생합니다.문제는 selinux가 centos7에서 실행하도록 설정되어 있다는 것입니다.이것은 devbox이기 때문에 전원을 껐습니다.
저도 같은 문제에 부딪혔어요. 라라벨을 사용하고 있어요. 그래서 제가 방금 한 일은:
php artisan view:clear
고정!
바이러스 스캐너(Avast)를 정지했습니다.이것으로 문제가 해결되었다!결국 Avast에는 documentroot 폴더에 대한 쓰기 작업을 차단하는 랜섬웨어 실드가 있는 것으로 나타났습니다.개별 프로그램(PHP, Teseract)에 대한 쉴드 예외를 추가하면 문제가 해결되었습니다!
여기 해결책이 있습니다.URL에서 img를 복사하려면 다음 URL:http://url/img.jpg
$image_Url=file_get_contents('http://url/img.jpg');
원하는 경로를 만들고 이름을 끝맺습니다..jpg
$file_destino_path="imagenes/my_image.jpg";
file_put_contents($file_destino_path, $image_Url)
이 문제를 해결하는 방법은 두 가지가 있습니다.
1. 사용chmod 777 path-to-your-directory
.
안 되면
2. 파일의 완전한 경로를 입력하기만 하면 됩니다.query.txt
.
게다가 에 기재된 바와 같이file_put_contents man page
에php.net
명명 문제에 주의하십시오.
file_put_contents($dir."/file.txt", "hello");
(구문에 대해서는 정확하지만) 동작하지 않을 수 있습니다.
file_put_contents("$dir/file.txt", "hello");
동작합니다. php가 설치된 여러 서버에서 이 현상을 경험했습니다.
언급URL : https://stackoverflow.com/questions/4917811/file-put-contents-failed-to-open-stream-permission-denied
'itsource' 카테고리의 다른 글
단일 SQL 문의 열 헤더 출력을 억제하려면 어떻게 해야 합니까? (0) | 2023.02.06 |
---|---|
팬더: 여러 열의 두 데이터 프레임을 병합(축소) (0) | 2023.02.06 |
비동기 작업을 수행하는 Redx 모달 대화 상자를 표시하려면 어떻게 해야 합니까? (0) | 2023.01.28 |
Python에서 변수와 함수에 대한 명명 규칙은 무엇입니까? (0) | 2023.01.28 |
치명적인 오류: 클래스 'Iluminate'기초\응용 프로그램을 찾을 수 없습니다. (0) | 2023.01.28 |