썸네일, 중간 및 큰 이미지를 만들지 못함


10

Drupal 7.10을 새로 설치할 때 공개 업로드 디렉토리를로 설정했습니다 sites/uploads.

그런 다음 이미지를 콘텐츠 인스턴스에 추가하면 원본이 sites/example.org/files/imagename.png예상대로 업로드됩니다 . 그러나 다른 이미지 (썸네일, 중간 및 큰)는에서 생성되지 않습니다 sites/example.org/styles/*.

PHP5-FPM 사용자가 디렉토리를 읽고 쓸 수 있으므로 현명한 문제 권한이 없어야합니다.

왜 이런 일이 발생합니까? 어떻게 고칠 수 있습니까?


웹 서버로 nginx를 사용하는 경우 호스트에서 추가 구성이 필요합니다. 자세한 내용은 여기를 참조하십시오. drupal.org/node/1048570#comment-4047984
Gnuget

답변:


13

맞습니다. 그 대답은 사실 제가 생각한 것보다 조금 더 미묘합니다. imagecachenginx vhost에서 D7의 교체에 약간의주의가 필요 하다는 것이 밝혀졌습니다 . 누락 된 파일에 대해 404가 Drupal로 전송되지 않으면 이미지가 생성되지 않습니다. 업로드 할 때 생성 된 것으로 가정 했으므로 처음에는 인식하지 못했습니다.

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
}

서버 정의에 추가해야하며 롤링 할 준비가되어 있어야합니다. 분명히 경로는 설정에 따라 변경해야 할 수도 있지만 내 경우에는 변경되었습니다.


1
이 작업을하려면 @rewrite 부분을 구성 파일의 다른 곳에 적절히 정의해야합니다. 즉, 그것은 이미 내 안에 있었고 이것은 내 문제도 해결 했으므로 jvc26 덕분에 감사합니다 :)
El Yobo

@ElYobo 좋은 지적-명확하게하기 위해 답변을 업데이트했습니다. 감사합니다
jvc26

이것이 nginx 리버스 프록시 구성에 영향을 줍니까? 나는 같은 문제가 있는데 이것이 해결되지 않는 것 같습니다.
Grizly

당신이 그들을 업로드에 생성되도록하려면 drupal.org/project/imageinfo_cache 그 수행
mikeytown2

잘 잡았습니다. 결국 원 클릭 드루팔 설치로 DigitalOcean이 자동으로 구성하는 파일 대신 nginx의 권장 서버 파일을 사용하게되었습니다.
Meglio

2

admin / config / media / file-system에서 공용 파일 시스템 경로와 임시 경로를 모두 확인하십시오.

올바른 권한으로 두 폴더를 모두 설정하면 파일을 저장할 때 하위 폴더가 자동으로 만들어지고 이미지가 저장되고 오류 메시지가 사라집니다.


2

내 경우에는 https를 사용하여 이미지를 가져 오기 때문에 문제가 발생했습니다.

파일 경로의 https를 무시하기 위해 보안 페이지 설정에 다음 줄을 추가했습니다.

*/files/*

이것이 누군가를 돕기를 바랍니다. :)


1

권한을 확인했다고 말하지만, 나는이 문제를 자주 겪었 기 때문에 여전히 시작할 것 입니다. 거의 항상 권한 문제였습니다.

일반적인 조언 : 우선, admin / config / media / file-system으로 가서 "Save configuration"을 클릭하십시오. 이로 인해 Drupal은 설정된 디렉토리의 권한을 다시 평가하고 문제가 발견되면 오류 메시지를 표시합니다.

둘째 : PHP 사용자가 아닌 웹 서버를 소유 한 아파치, www-data 또는 다른 사용자가 있다고 가정합니까? Linux 또는 Mac 시스템에서는 해당 사용자에게 sudo를 사용하십시오. 올바른 사용자로 파일을 작성하는 것은 올바른 권한을 갖도록하는 가장 좋은 방법입니다. sites / domain.com / files /로 이동하여 "echo data> new_file; cat new_file;"로 전화하십시오. 터미널에서. 실제로 쓰기 디렉토리에 쓸 수 있는지 확인합니다. tmp 디렉토리와 동일하게 수행하십시오. 다른 누군가가 창문과 같은 시스템에서 동일한 작업을 수행하는 방법을 제안 할 수 있기를 바랍니다.

셋째 : 디렉토리 권한을 제외하려면 files 디렉토리에 재귀 적으로 적용하십시오 (777). 이후에 더 많은 정상 권한을 복원 할 수 있습니다

find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644

넷째 : 전체 권한이있는 tmp 디렉토리를 확인하십시오.

다섯째 : 지금까지 코드를 알아 낸 경우 코드 디버깅을 시작해야 할 수도 있습니다.


제안에 감사드립니다 : 파일 시스템 변경시 Drupal의 오류가 발생하지 않았으므로 권한을 확인해야합니다. PHP 프로세스는 모두 해당 디렉토리에 쓸 수있는 사용자로 실행되므로 웹 서버를 실행하는 사용자는 쓰기 기능에 차이가 없습니다. 쓰기와 호환되는 수동 권한을 확인했습니다. / tmp는 평소 777이므로 쓰기 문제가 없습니다. 경로 불일치가 정렬되어 내 실수였습니다.
jvc26

결과적으로 문제는 nginx 구성 중 하나였으며 404를 Drupal로 전달하여 썸네일 생성을 유발하는 문제가있었습니다.
jvc26

1

Letharion의 답변을 완성하기 위해 여기에 축소판 그림, 중간 ... 이미지 스타일을 만드는 데 사용한 방법이 있습니다.

먼저 위에 나열된 모든 포인트를 결과없이 확인했습니다.

그런 다음 (Linux OS에서) php의 umask변경 하도록 /usr/local/etc/suphp.conf 를 편집 하여 최대 755 권한 (최대 744)으로 파일과 디렉토리를 만들 수 있습니다.

그리고 이것은 문제를 결정적으로 해결했습니다. :)


0

Drupal 8.0.3에 있습니다.
내 경우에는이 폴더가 설치시 생성되지 않습니다.

sites/default/files/field/image

따라서 이전 버전의 Drupal 설치에서 복사하여 넣었습니다.
썸네일, 중간 및 큰 이미지를 포함한 모든 이미지가 표시됩니다.


-1

루트 및 파일 디렉토리에서 .htaccess 파일을 확인하십시오. 필요한 경우 새 .htaccess 파일로 교체

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