move_movel_file은 "오픈 스트림에 대한 접근:권한 거부" 오류
CentOS에서 Apache 2.2와 PHP 5.3으로 업로드 디렉토리를 설정하려고 하면 이 오류가 계속 발생합니다.
php.ini의 경우:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
httpd.conf의 경우:
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
CentOS 디렉토리 권한:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
어떤 작업을 해도 파일을 업로드할 때 PHP에서 다음 오류가 계속 발생합니다.
경고: move_uploaded_file(images/robot.jpg): 스트림을 열지 못했습니다./var/www/html/mysite/process에서 권한이 거부되었습니다.78행의 php
경고: move_uploaded_file(): /var/www/html/mysite/process에서 '/tmp/phpsKD2Qm'을 'images/robot.jpg'로 이동할 수 없습니다.78행의 php
보시다시피 업로드 파일에 관한 설정을 php.ini 파일에서 가져온 적이 없습니다.
내가 여기서 뭘 잘못하고 있는 거지?
그 이유는images
그리고.tmp_file_upload
에 의해서만 쓸 수 있다.root
사용자. 업로드가 작동하려면 이러한 폴더의 소유자를 httpd 프로세스 소유자와 같게 하거나 전역 쓰기 가능 상태로 만들어야 합니다(부정 관행).
- Apache 프로세스 소유자 확인:
$ps aux | grep httpd
첫 번째 열은 일반적으로 소유자가 됩니다.nobody
소유자 변경
images
그리고.tmp_file_upload
될 것nobody
또는 1단계에서 찾은 소유자가 무엇이든 상관없습니다.$sudo chown nobody /var/www/html/mysite/images/ $sudo chown nobody /var/www/html/mysite/tmp_file_upload/
Chmod
images
그리고.tmp_file_upload
필요에 따라서, 소유자가 기입할 수 있도록 합니다.[이미 이 기능을 사용하고 있는 것 같습니다]@Dmitry Teplyakov 답변에 기재되어 있습니다.$ sudo chmod -R 0755 /var/www/html/mysite/images/ $ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/
이 동작이 발생하는 원인에 대한 자세한 내용은 매뉴얼 http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir을 참조해 주십시오.또, 다음의 내용에 대해서도 설명합니다.
open_basedir
지시.
다음 스크립트를 실행하여 Apache 프로세스 소유자를 확인할 수도 있습니다.
<?php echo exec('whoami'); ?>
그런 다음 대상 디렉토리의 소유자를 현재 디렉토리로 변경합니다.다음 명령을 사용합니다.
chown user destination_dir
그런 다음 명령어를 사용합니다.
chmod 755 destination_dir
대상 디렉토리 권한을 변경합니다.
이건 나한테 효과가 있었어.
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www
그런 다음 로그아웃하거나 재부팅합니다.
한다면SELinux
불만 사항, 다음을 시도해 보십시오.
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www(/.*)?'
sudo restorecon -Rv '/var/www(/.*)?'
Mac OS X가 있는 경우 웹 사이트의 파일 루트 또는 폴더로 이동합니다.
그런 다음 마우스 오른쪽 버튼을 클릭하여 정보를 가져오고 맨 아래(공유 및 권한)로 이동하여 열고 모든 읽기 전용을 읽기 및 쓰기로 변경합니다.자물쇠를 열고 설정 아이콘으로 이동한 후 동봉된 항목에 적용...을 선택하십시오.
나는 이것을 이전 제안들에 추가하고 싶었다.SELinux가 네이블로 되어 있는 Linux 버전을 사용하는 경우 셸에서도 다음 작업을 수행해야 합니다.
chcon -R --type httpd_sys_rw_content_t /path/to/your/directory
그룹 또는 디렉토리 소유자 변경을 통해 웹 서버 사용자에게 권한을 부여합니다.
이 폴더에 대한 사용 권한 변경
# chmod -R 0755 /var/www/html/mysite/images/
이것을 시험해 보세요.
/etc/pars2/envars를 엽니다.
sudo gedit /etc/apache2/envvars
www-data
당신의 것과 함께your_username
"export APACHE_RUN_USER=www-data"
로 대체하다.
export APACHE_RUN_USER='your_username'
저는 이미 작곡가를 성공적으로 운영했는데도 이와 관련된 문제에 부딪혔습니다.만, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★composer install
★★★★★★★★★★★★★★★★★」php composer.phar install
...열린 스트림:권한이 거부되었습니다...
많은 조사 결과 폴더 권한 변경에 대한 이전 답변이 효과가 있음이 밝혀졌습니다.그것들은 이제 조금 다른 디렉토리일 뿐이다.
X에서 X에 ./Users/[USER]/.composer/cache
캐시 파일이 루트 소유였기 때문에 문제가 있었습니다.되었습니다.composer의 소유권을 사용자에게 재귀적으로 변경하면 문제가 해결되었습니다.
제가 한 일은 다음과 같습니다.
sudo chown -R [USER] cache
그리고 작곡가 설치를 다시 실행한 후 voila!
이 문제는 Apache 사용자(www-data)에게 폴더에 쓸 수 있는 권한이 없는 경우에 발생합니다.이 문제를 해결하려면 사용자를 www-data 그룹에 포함시켜야 합니다.
내가 방금 만든 거야
코드 php 를 합니다.<?php echo exec('whoami'); ?>
아파치그런 다음 단말기에서 다음 명령을 수행합니다.
user@machine:/# cd /var/www/html
user@machine:/var/www/html# ls -l
다음과 같이 반환됩니다.
total of files
drwxr-xr-x 7 user group size date folder
사용자를 유지했지만 그룹을 www-data로 변경했습니다.
chown -R user:www-data yourprojectfoldername
chmod 775 yourprojectfoldername
해결책은 매우 쉽다.IMAGE(대상) 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동한 다음 권한 탭을 클릭한 다음 다른 액세스 권한을 파일 생성 및 삭제로 변경하십시오.
tmp_file_upload 권한을 755로 변경하기만 하면 됩니다.다음은 chmod - R 755 tmp_file_upload 명령어입니다.
이거 드셔보세요
find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664
이라면 일어날 수 있는 일이다SELinux
이네이블입니다.을 무효로 하다/etc/selinux/config
「」를 SELINUX=disabled
서버를 재기동합니다.
나는 위의 모든 해결책을 시도해 보았지만, 다음과 같이 나의 문제를 해결했다.
chcon -R -t httpd_sys_rw_content_t your_file_directory
언급URL : https://stackoverflow.com/questions/8103860/move-uploaded-file-gives-failed-to-open-stream-permission-denied-error
'programing' 카테고리의 다른 글
재스트를 사용하여 Vue.js 컴포넌트의 메서드를 유닛 테스트하는 방법 (0) | 2023.01.31 |
---|---|
리더를 InputStream으로, 라이터를 OutputStream으로 변환하는 방법 (0) | 2023.01.31 |
1부터 시작하는 숫자 범위를 열거하는 방법 (0) | 2023.01.31 |
Vue - 여러 확인란이 있는 입력 (0) | 2023.01.31 |
MySQL에서 "오버헤드"는 무엇을 의미하며, 무엇이 문제이며, 어떻게 수정해야 합니까? (0) | 2023.01.31 |