복붙노트

move_uploaded_file은 내가 수행 한 모든 구성이 끝난 후 "스트림을 열지 못했습니다 : Permission denied"오류를 표시합니다.

PHP

move_uploaded_file은 내가 수행 한 모든 구성이 끝난 후 "스트림을 열지 못했습니다 : Permission denied"오류를 표시합니다.

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에서이 오류가 계속 발생합니다.

보시다시피 업로드 파일과 관련하여 php.ini 파일에서 구성을 가져 오지 않았습니다.

여기서 내가 뭘 잘못하고 있니?

해결법

  1. ==============================

    1.이는 이미지 및 tmp_file_upload가 루트 사용자 만 쓸 수 있기 때문입니다. 업로드가 작동하려면 해당 폴더의 소유자를 httpd 프로세스 소유자와 같게 만들거나 전역 적으로 쓰기 가능하도록해야합니다 (나쁜 습관).

    이는 이미지 및 tmp_file_upload가 루트 사용자 만 쓸 수 있기 때문입니다. 업로드가 작동하려면 해당 폴더의 소유자를 httpd 프로세스 소유자와 같게 만들거나 전역 적으로 쓰기 가능하도록해야합니다 (나쁜 습관).

  2. ==============================

    2.이 스크립트를 실행하여 Apache 프로세스 소유자를 찾을 수도 있습니다.

    이 스크립트를 실행하여 Apache 프로세스 소유자를 찾을 수도 있습니다.

    그리고 목적지 디렉토리의 소유자를 가지고있는 것으로 변경하십시오. 다음 명령을 사용하십시오.

    chown user destination_dir
    

    그런 다음 명령을 사용하십시오.

    chmod 755 destination_dir
    

    대상 디렉토리 권한을 변경하십시오.

  3. ==============================

    3.Mac OS X을 사용하는 경우 파일 루트 또는 웹 사이트의 폴더로 이동하십시오.

    Mac OS X을 사용하는 경우 파일 루트 또는 웹 사이트의 폴더로 이동하십시오.

    그런 다음 오른쪽 버튼을 클릭하고 정보를 얻으십시오. 맨 아래로 이동 (공유 및 권한), 열어 읽기 전용으로 모두 읽고 쓰기로 변경하십시오. 자물쇠를 열고 설정 아이콘으로 이동 한 다음 동봉 된 항목에 적용을 선택하십시오 ...

  4. ==============================

    4.이 폴더에 대한 사용 권한 변경

    이 폴더에 대한 사용 권한 변경

    # chmod -R 0755 / var / www / html / mysite / images /

  5. ==============================

    5.이미 성공적으로 작곡가를 실행 한 후에도 관련 문제가 발생했습니다. 나는 작곡가를 업데이트하고, 작곡가 설치 또는 PHP composer.phar 설치를 실행하면 다음을 얻었습니다.

    이미 성공적으로 작곡가를 실행 한 후에도 관련 문제가 발생했습니다. 나는 작곡가를 업데이트하고, 작곡가 설치 또는 PHP composer.phar 설치를 실행하면 다음을 얻었습니다.

    폴더에 대한 사용 권한 변경과 관련된 이전 답변이 효과가 있다는 연구 결과가 나옵니다. 그들은 이제 약간 다른 디렉토리입니다.

    설치시 OS X에서는 캐시 파일이 /Users/[USER]/.composer/cache에 있고 캐시 파일이 루트에 의해 소유 되었기 때문에 문제가 발생했습니다. '.composer'의 소유권을 내 사용자에게 재귀 적으로 변경하면 문제가 해결됩니다.

    이것이 내가 한 일이다.

    sudo chown -R [USER] cache
    

    그런 다음 작곡가를 설치하고 다시 설치합니다.

  6. ==============================

    6.이것은 나를 위해 일했다.

    이것은 나를 위해 일했다.

    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(/.*)?'
    
  7. ==============================

    7.이 시도:

    이 시도:

  8. ==============================

    8.이전 제안에이 내용을 추가하고 싶습니다. SELinux가 활성화 된 Linux 버전을 사용하고 있다면 쉘에서도 다음을 실행해야합니다.

    이전 제안에이 내용을 추가하고 싶습니다. SELinux가 활성화 된 Linux 버전을 사용하고 있다면 쉘에서도 다음을 실행해야합니다.

    chcon -R --type httpd_sys_rw_content_t /path/to/your/directory
    

    그룹 소유자 또는 디렉토리 소유자 변경을 통해 웹 서버 사용자에게 권한을 부여하는 것과 함께.

  9. ==============================

    9.이 문제는 아파치 사용자 (www-data)가 폴더에 쓸 수있는 권한이 없을 때 발생합니다. 이 문제를 해결하려면 사용자를 www-data 그룹에 넣어야합니다.

    이 문제는 아파치 사용자 (www-data)가 폴더에 쓸 수있는 권한이 없을 때 발생합니다. 이 문제를 해결하려면 사용자를 www-data 그룹에 넣어야합니다.

    나는 방금 이것을 만들었다 :

    이 PHP 코드를 실행하십시오. 아파치가 사용하는 사용자를 발견하십시오. 그 후에 터미널에서 명령을 실행하십시오.

    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- 데이터로 변경했다.

    chown -R user:www-data yourprojectfoldername
    
    chmod 775 yourprojectfoldername
    
  10. ==============================

    10.이 시도

    이 시도

    / var / www / html / mysite / images / -type f -print0 |을 찾으십시오. xargs -0 chmod -v 664

  11. ==============================

    11.tmp_file_upload의 권한을 755로 변경하십시오. 다음은 명령입니다. chmod -R 755 tmp_file_upload

    tmp_file_upload의 권한을 755로 변경하십시오. 다음은 명령입니다. chmod -R 755 tmp_file_upload

  12. ==============================

    12.해결책은 너무 쉽습니다. IMAGE (대상) 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동 한 다음 권한 탭을 클릭하고 다른 사람이 파일을 만들고 삭제할 수있는 권한으로 변경하십시오.

    해결책은 너무 쉽습니다. IMAGE (대상) 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동 한 다음 권한 탭을 클릭하고 다른 사람이 파일을 만들고 삭제할 수있는 권한으로 변경하십시오.

  13. from https://stackoverflow.com/questions/8103860/move-uploaded-file-gives-failed-to-open-stream-permission-denied-error-after by cc-by-sa and MIT license