임시 디렉토리 구성


48

최근에 사이트를 로컬 호스트에서 VPS로 옮겼습니다. 공개 및 개인 파일을 쓰기 가능하게 만들었습니다. 그러나 임시 폴더를 찾을 위치와 사용 권한을 변경하는 방법을 잘 모르겠습니다. 이 메시지가 계속 나타납니다.

대상 디렉토리가 올바르게 구성되지 않아서 지정된 파일 temporary : // file3Hl91E를 복사 할 수 없습니다. 파일 또는 디렉토리 권한에 문제가있을 수 있습니다. 자세한 정보는 시스템 로그에 있습니다.

Virtualmin, Drupal 7 및 Debian 서버를 사용하고 있습니다. 내 현재 임시 디렉토리는 /tmp입니다.

답변:


46

관리자-> 구성-> 매체-> 파일 시스템을 확인하여 tmp 경로를 개인화하십시오. 상대 경로를 사용하고 Apache 사용자에게 올바른 권한이 있는지 확인하십시오.

나는 개인적으로이 기사 수정 파일 업로드를 좋아한다 . 그는 잘 관찰했다 그것은 나를 위해 일했다.

최근에 내 사이트를 Mac 컴퓨터로 다운로드했습니다. 내 Mac mod_userdir에서 Apache를 사용 하고 있었고 /etc/apache2/users/nameofuser.conf설정해야 한다는 것을 잊어 버렸습니다 AllowOverride All. 그렇지 않으면 다음 메시지가 표시됩니다.

대상 디렉토리가 올바르게 구성되지 않아서 지정된 파일 임시를 복사 할 수 없습니다.


포함 된 링크가 다운되었습니다
— pal4life

링크가 돌아 왔습니다 !! 저자는 사이트를 친절하게 되돌려 놓았습니다!
— cayerdis

2
답변에 이러한 "관찰"의 종합을 추가하는 것이 좋습니다.
— fifi finance 21.16의

4
링크가 다시 다운되었습니다.
— Kari Kääriäinen


17

settings.php에서

$conf['file_temporary_path'] = '/tmp';

이것은 유닉스 시스템에서 99 %의 시간 동안 작동합니다.

일반적으로 / tmp 디렉토리는 열린 권한이있는 UNIX 시스템에 존재하며 특히 임시 파일을 위해 존재하며 종종 성능을 향상 시키도록 설정됩니다.

ls -al /tmp명령 행에서 실행 하여 권한을 확인할 수 있습니다 .

이에 대한 자세한 내용은 https://en.wikipedia.org/wiki/Temporary_folder를 참조 하십시오.


1
이것은 실제로 제 생각에는 좋은 대답이 아닙니다. 설명 /tmp이 없으며 올바른 권한이 없으면 작동 하지 않을 수 있습니다. 그것은 심지어 받아 들여진 대답과 모순됩니다 (독립적으로도 좋지 않습니다).
— fifi finance 20시 57 분

대답에 많은 설명이 필요하다고 생각하지 않습니다. settings.php에서 $ conf 변수가 어떻게 작동하는지 Drupal 개발자에게 일반적인 지식이라고 말하고 싶습니다. 이 답변에 대한 좋은 점 중 하나는 간결하다는 것입니다. 수락 된 답변과 모순되는지 확실하지 않으며 수락 된 답변이 효과가 있으며 이것이 대안입니다. 이 방법과 UI를 통한 방법의 차이점은 여러 환경에서 작동하지만 각 환경에 대해 UI에서 개별적으로 설정해야한다는 것입니다.
— chim

16

지정된 임시 디렉토리 (admin / config / media / file-system에 정의 됨)와 임시 파일을 복사 할 폴더 모두에 권한 문제가있을 수 있음을 이해해야합니다. 나는이 오류를 몇 번 보았으며 일반적으로 임시 폴더에는 문제가 아니지만 temp 폴더에 저장된 후 해당 파일이 복사되는 최종 폴더입니다.

또한 공용 파일 시스템 경로가 올바르게 설정되어 있는지 확인하십시오.


1
이것은 나를위한 경우였습니다. 필자의 경우 새로 만든 / sites / default / files 디렉토리의 소유권을 USERNAME : apache로 설정해야했습니다 (일부 시스템에서는 해당 그룹을 nobody라고 함).
— Evan Donovan

8

나는이 정확한 문제가 있었고 제안 된대로 내 tmp 폴더 위치에 상대 경로 (sites / default / files / tmp)를 사용하고 tmp 폴더에 대한 권한을 변경하여 아파치에 의해 쓰기 가능했지만 내 문제는 여전히 존재했다. . 그래서 로그 메시지 (보고서 >> 최근 로그 메시지)를 확인하여 문제가 무엇인지 더 잘 이해할 수 있는지 확인하기로 결정했습니다. 이렇게하면보다 구체적인 메시지가 나타납니다.

public : // js에서 파일 권한을 설정할 수 없습니다.

이것은 사이트 / 기본 / 파일의 js 폴더에 대한 권한을 확인하라는 메시지를 표시했으며 아파치를 쓸 수 없으므로 해당 폴더의 권한을 775로 변경하여 오류 메시지를 제거했습니다. 따라서 아직 문제를 해결하지 않은 경우 tmp 폴더뿐만 아니라 sites / default / files의 모든 하위 폴더에 대한 권한을 확인하는 것이 좋습니다. 이 정보를 공유하겠다고 생각했습니다.


내 문제는 이것과 같지만 다음을 사용하여 수정합니다. sudo chgrp -R www-data / var / www / mysite
— Wavesailor

"775로 권한 변경"sudo chgrp -R www-data /var/www/mysite 과 결합한다고 가정합니다 . 이것은됩니다 NOT 필요합니다. Drupal은 모든 폴더 에 쓸 필요는 없습니다 . 공용, 개인 및 tmp 파일 폴더 만
— rovr138

예-여기에 다른 대답이 언급되지 않은 중요한 점은 대상 디렉토리를 찾는 것 입니다 (일반적으로 sites / default / files-/ css 및 / js는 JS / CSS 연결을 켠 경우 주요 후보입니다). 로그를 보면서 만 얻을 수 있습니다.
— 윌리엄 Turrell

… * 그러나 *-관리 양식의 레이블에는 "웹을 통해이 디렉토리에 액세스 할 수 없습니다"라고 표시되어 있으므로 Apache 또는 Nginx에서 / sites / default / files / tmp를 보호하기위한 조치를 취하지 않으면 나쁜 생각이 있습니다.
— William Turrell

5

파일 시스템 설정을 찾아서 admin/config/media/file-system / tmp 로 변경하십시오.

또한 설정 문제에 대해 관리자 / 보고서 / 상태를 확인할 수 있습니다

/ tmp 권한에 대해 755를 부여하면 / public_html에서 찾을 수 있습니다.


2

오류 메시지는 somteimes를 오도 할 수 있습니다

문제가 대상 디렉토리와 관련이 있다고하면 Apache에 Drupal이 파일을 넣으려고하는 sites / default / files 하위 폴더에 쓸 수있는 권한이 없을 것입니다.

좋은 해결책은 아파치 사용자를 sites / default / files 아래의 모든 파일과 디렉토리의 소유자로 만드는 것입니다.

cd /path/to/sites/default
sudo chown -R _www:_www files

또는 비슷한 것이 대상 디렉토리 문제를 해결해야합니다. 소유자가 모든 하위 디렉토리에 대한 쓰기 및 실행 권한을 가지고 있는지 다시 확인하십시오.


1
이 솔루션은 내가이 우분투 14.014에 노력하고 끝났어요, 내 하루를 저장chown -R www-data:www-data /var/www/html/sites/default/files/
— 리시 Kulshreshtha

2

파일 디렉토리 : Apache 기반 웹 서버 문제 해결

웹 서버가 디렉토리 파일을 "소유"하지 않으면 두 가지 방법으로 진행할 수 있습니다. 이 지시 사항은 웹 서버에 대한 쉘 액세스 권한이 있다고 가정합니다. 쉘 액세스 권한이없는 경우 추가 지원이 필요하면 호스팅 제공 업체에 문의하십시오.

웹 서버의 이름과 일치하도록 디렉토리 파일의 "소유자"를 변경할 수있는 것이 이상적입니다. Unix 또는 Linux 기반 서버에서 다음 명령을 실행하여 웹 서버가 "누가"실행 중인지 확인할 수 있습니다.

$ ps aux  |grep apache # for Apache 2.x
$ ps aux  |grep httpd # for Apache 1.x

웹 서버에 따라 이러한 명령 중 하나는 다음과 같은 일련의 행을 반환합니다.

www-data 13612  0.1  0.9  50640 20340 ? S 12:29   0:08 /usr/sbin/apache2 -k start

반환 된 텍스트의 첫 번째 열은 웹 서버가 작동하는 "사용자"입니다. 이 경우 사용자는 www-data입니다. 웹 서버에서 파일 디렉토리를 쓰기 가능하게하려면 다음 명령을 사용하여 소유권을 재지 정해야합니다.

$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files

서버에서 폴더 소유권을 변경할 수있는 충분한 권한이없는 경우 다음으로 가장 좋은 옵션은 다음 명령을 사용하여 폴더에 대한 그룹 쓰기 액세스를 제공하는 것입니다.

$ chmod -R 0770 sites/default/files

위에서 설명한 FTP 프로그램을 사용하여 디렉토리의 권한을 조정할 수도 있어야합니다.

이 단계를 완료하면 관리-> 보고서-> 상태 보고서로 이동하여 적절한 권한이 할당되었는지 확인하십시오. "파일 시스템"으로 표시된 섹션으로 스크롤하여 설정이 올바른지 확인하십시오.

출처 : 파일 디렉토리


1

또 다른 오류 원인은 파일 폴더에 쓸 수 없다는 것입니다. 내 경우에는 다음을 사용하여 해결했습니다.

$chmod 777 sites/default/files/pictures/

15
정말? 생산 현장이 무엇인지 777? 그것은 무책임한 충고 일뿐입니다.
— David Meister

네, 적어도 755를주세요.
— user1359

@DavidMeister 나는 당신을 공감했지만 불행히도 공유 호스팅 (구토)에서 때때로 777은 아파치가 폴더에 쓸 수있는 유일한 방법이다

@andrewtweber 확실 합니까? 공유 호스팅 환경에서도 775는 필요한만큼 느슨해야합니다. 777이 필요한 공유 호스팅 제공 업체의 예를 들어 주시겠습니까? 공유 서버에서 777을 사용하고 VPS가없는 경우 서버의 다른 모든 사용자가 파일에 액세스 할 수 있습니다.
— David Meister

3
@andrewtweber도 그렇습니다. 교훈은 "공유 호스팅"에 777이 필요하지만 "appalling 호스팅"에 777이 필요하다는 것입니다.
— David Meister

1

경우에 따라 기본 / 파일에서 'ctools'및 'js'폴더를 삭제하여 쉽게 해결할 수 있습니다. 필요한 경우 시스템에서이 폴더를 다시 만듭니다. 기존 사이트를 새로 설치할 때 기존 폴더가 이미 문제를 일으키는 경우가 있습니다. 또한 기존 사이트를 새로 설치 한 후 CSS가 작동하지 않는 경우 이러한 파일을 삭제하고 drupal이 파일을 다시 만들도록하여 문제를 해결할 수도 있습니다.


0

오래되고 문제가되는 구성

chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private

drw-rw-r-- 2 www-data www-data  4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data  4096 Jul  5 15:08 private

나의 새롭고 일하기 좋은 구성

chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private

drwxrwxr-- 2 www-data www-data  4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data  4096 Jul  5 15:08 private

예, 폴더를 사용하려면 폴더에서 실행이 필요합니다. 775가 774보다 더 적합 할 것입니다. 소유권이 설정되는 방식으로 755도 좋은 옵션입니다.
— rooby

0

임시 폴더에 대한 올바른 권한은 웹 서버 구성에 따라 다릅니다.

Apache와 같이 웹 서버의 모듈로 PHP로 Drupal을 실행하는 경우 User 지시문을 사용하여 기본 웹 서버 구성 파일에 정의 된 사용자가 쓰기 액세스 권한을 가져야합니다.

% grep -i "사용자"/etc/httpd/conf/httpd.conf

사용자 아파치


0

한 서버에서 다른 서버로 옮긴 후에도 동일한 문제가 발생했습니다.

폴더를 755 등으로 설정하여 여기에 제안 된 모든 것을 시도했습니다.

내 임시 폴더는 ""tmp7zXhVVCO "로 설정되었으며 모든 재시도 후에 임시 파일이 복사되는 것을 보았지만 설치가 계속 실패했습니다.

그러나 문제는 소유자의 권리가 아니며, 777이이 오류를 제거하는 이유입니다. 그러나 우리는 이것이 프로덕션 사이트로 갈 수있는 방법이 아니라는 것을 모두 알고 있습니다.

당신이해야 할 일은 임시 폴더를 "temp"또는 다른 것이 아닌 다른 것으로 변경하는 것입니다. 아직 존재하지 않는 한 drupal은 사용자 권한이 아닌 아파치 권한 과 문제 가있는이 새로운 폴더를 만듭니다. 해결됩니다.


이렇게하면 오류가 발생합니다The directory ../temp2 does not exist and could not be created.
— Paul Trotter

0

나는 기존의 답변을 정말로 좋아하지 않으므로 시간이 지남에 따라 업데이트 될 것입니다. 주로 셸 명령이 있습니다.

지금은 다음에서 실행하십시오 sites/example.com.

MYSITE=example.com
FILES=sites/$MYSITE/files  
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)   
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS

0

구성-> 미디어-> 파일 시스템에서 / temp-catalogue를 제거했습니다. 그 후 나는 아무런 문제가 없었습니다.


0

나는 이주에 대해 같은 문제가 있었다. 모든 사이트 / 기본 / 파일에 chmod 777이 있지만 오류가 계속 발생합니다. 사이트 / 기본 / 파일에서 권한 775를 변경하면 메시지가 사라졌습니다. 나는 개인 경로 문제가 아니었다, 나의 / var / tmp이지만 775 권한이다.


0

Pantheon을 사용하여이 문제를 겪고 (temp) 파일 디렉토리 경로를 설정 한 후에도 오류가 계속 발생하면 dev 인스턴스 대시 보드의 연결 모드를 Git에서 SFTP로 전환해야 할 수도 있습니다.

Drupal 사이트가 Git이 관리하는 디렉토리에 파일을 저장하려고 시도했을 수 있습니다 (예 : Adaptive Themes 테마에서 레이아웃 설정 등을 변경하는 경우). 그렇게하려면 SFTP로 전환하십시오. 파일이 저장되면 Git으로 다시 전환 할 수 있으며 대시 보드에 서버에서 변경 한 내용을 커밋하라는 메시지가 표시됩니다.


0

나는 같은 문제가 있었다.

Windows에서 IIS를 사용하고있었습니다. 마지막으로 문제는 sites / default / files 폴더 및 분명히 sites / default / files / tmp의 권한에 대한 문제였습니다.

마지막으로 폴더에 "전체 권한"을 다시 부여하여 작동했습니다.

문안 인사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.