move_uploaded_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) : 스트림을 열지 못했습니다 : 78 행의 /var/www/html/mysite/process.php에서 권한이 거부되었습니다.
경고 : move_uploaded_file () : 78 행의 /var/www/html/mysite/process.php에서 '/ tmp / phpsKD2Qm'을 'images / robot.jpg'로 이동할 수 없습니다
보시다시피 업로드 파일과 관련하여 php.ini 파일에서 구성을 취하지 않았습니다.
내가 여기서 뭘 잘못하고 있니?
때문입니다 images
및 tmp_file_upload
들만 쓸 수있는 root
사용자. 업로드가 작동하려면 해당 폴더의 소유자를 httpd 프로세스 소유자와 동일하게 만들거나 전역으로 쓸 수 있도록해야합니다 (나쁜 방법).
- 아파치 프로세스 소유자를 확인하십시오
$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
대상 디렉토리 권한을 변경합니다.
Mac OS X을 사용하는 경우 파일 루트 또는 웹 사이트 폴더로 이동하십시오.
그런 다음 마우스 오른쪽 버튼으로 클릭하고 정보를 얻고 맨 아래로 이동 ( 공유 및 권한 )하고 열어서 모든 읽기 전용을 읽고 쓰도록 변경하십시오. 자물쇠를 열고 설정 아이콘으로 이동 한 다음 동봉 된 항목에 적용 을 선택 하십시오 .
이 폴더에 대한 권한 변경
# chmod -R 0755 /var/www/html/mysite/images/
나는 이것을 이전 제안에 추가하고 싶었다. SELinux가 활성화 된 Linux 버전을 사용하는 경우 쉘에서도이를 실행해야합니다.
chcon -R --type httpd_sys_rw_content_t /path/to/your/directory
웹 서버 사용자에게 그룹 소유자 또는 디렉토리 소유자 변경을 통해 권한을 부여하는 것과 함께.
이것은 나를 위해 일했습니다.
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(/.*)?'
이미 작곡가를 성공적으로 실행 한 후에도이 관련 문제가 발생했습니다. 작곡가를 업데이트했으며 실행 composer install
하거나 php composer.phar install
얻었을 때 :
... 스트림을 열지 못했습니다 : 권한이 거부되었습니다 ...
폴더에 대한 권한 변경에 대한 이전 답변이 효과가 있다는 것이 많은 연구 후에 밝혀졌습니다. 그들은 지금 약간 다른 디렉토리입니다.
설치시 OS X에서 캐시 파일이에 /Users/[USER]/.composer/cache
있으며 캐시 파일이 루트가 소유했기 때문에 문제가 발생했습니다. '.composer'의 소유권을 사용자에게 재귀 적으로 변경하면 문제가 해결되었습니다.
이것이 내가 한 일입니다.
sudo chown -R [USER] cache
Then I ran the composer install again and voila!
Try this:
open /etc/apache2/envvars
sudo gedit /etc/apache2/envvars
replace
www-data
with youryour_username
"export APACHE_RUN_USER=www-data"
replace with
export APACHE_RUN_USER='your_username'
This problem happens when the apache user (www-data) does not have permission to write in the folder. To solver this problem you need to put the user inside the group www-data.
I just made this:
Execute this php code <?php echo exec('whoami'); ?>
to discover the user used by apache. After, execute the commands in the terminal:
user@machine:/# cd /var/www/html
user@machine:/var/www/html# ls -l
It will return something like this:
total of files
drwxr-xr-x 7 user group size date folder
I kept the user but changed the group to www-data
chown -R user:www-data yourprojectfoldername
chmod 775 yourprojectfoldername
Just change the permission of tmp_file_upload to 755 Following is the command chmod -R 755 tmp_file_upload
Try this
find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664
The solution is so easy. Only right click the IMAGE (destination) folder, go to properties, click the permission tab, and change others access to Create and delete files.
'IT story' 카테고리의 다른 글
파이썬 pep-8은 들여 쓰기를 위해 탭 위에 공백을 강력하게 권장하는 이유는 무엇입니까? (0) | 2020.06.24 |
---|---|
소프트 삭제는 좋은 생각입니까? (0) | 2020.06.24 |
Gradle에서 환경 변수를 얻는 더 좋은 방법이 있습니까? (0) | 2020.06.24 |
오류 : Jack은 Java 8 언어 기능을 지원해야합니다. (0) | 2020.06.24 |
iPhone / iPad Simulator의 크기를 조정하는 방법은 무엇입니까? (0) | 2020.06.24 |