임시 디렉토리 구성


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.