2011-03-08 5 views
0

우분투의 ubercart/drupal 6에서 thickbox를 사용하고 있습니다. 문제는 Windows 시스템에서 우분투로 사이트를 옮겼습니다. 정렬 된 경로 및 사용 권한과 사이트의 모든 문제는 잘 작동합니다. 제가 겪고있는 유일한 문제는 제품 이미지를 클릭 할 때 thickbox가 미리보기 팝업을 보여 주어야한다는 것입니다. 대신 팝업 창에 이상한 문자가 표시됩니다. 해당 문자의 복사/붙여 넣기 :thickbox의 이미지 창에 이상한 문자가 표시됩니다.

JFIF ,, Exif MM ( 1 2 i 4NIKON CORPORATION NIKON D70s , , 어도비 포토샵 7.0 2008 : 08 : 21 17:13 : 50 % " 0221 ֒ ޒ  , 90 90 90 0100 " E X 2008 : 08 : 19 15 : 40 : 17 2008 : 08:19 15 : 40 : 17 + ASCII ( W H H JFIF H H Adobe_CM 7 " ? 3 ! 1AQa. . . . 그리고 훨씬 더 유사한 문자

이미지가 제대로 업로드되고 사이트/default/files/아래에서 볼 수 있습니다. 미리보기 이미지도 생성됩니다. 이러한 미리보기 이미지는 사이트에도 표시됩니다. 또한 썸네일을 마우스 오른쪽 버튼으로 클릭하고 새 탭에서 열면 전체 이미지가 올바르게 표시됩니다.

http://127.0.0.1/elegancia/?q=system/files/imagecache/product_full/image_1.jpg&random=1299550719133 

복사가 새 브라우저 탭에 불을 지르고에서 같은 요청을 붙여 화상을 성공적으로 열립니다

또한, Thickbox와 같은 형태의 URL로 이미지에 대한 아약스 GET 요청을 보냅니다.

는 불을 지르고에서, 이들은 아약스 요청에 대한 요청의 응답 헤더 있습니다

Response Headers 
view source 
Date Tue, 08 Mar 2011 02:18:39 GMT 
Server Apache/2.2.16 (Ubuntu) 
X-Powered-By PHP/5.3.3-1ubuntu9.3 
Expires Tue, 22 Mar 2011 02:18:39 GMT 
Last-Modified Tue, 08 Mar 2011 01:21:47 GMT 
Cache-Control max-age=1209600, private, must-revalidate 
Content-Length 111831 
Etag "4dfe0f3d345781ac89aae5c2a10361ad" 
Keep-Alive timeout=15, max=92 
Connection Keep-Alive 
Content-Type image/jpeg 

Request Headers 
view source 
Host 127.0.0.1 
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15 
Accept text/html, */* 
Accept-Language en-gb,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
X-Requested-With XMLHttpRequest 
Referer http://127.0.0.1/elegancia/ 
Cookie SESS7a3e11dd748683d65ee6f3c6a918aa02=bijhrr4tl66t42majfs3702a06; has_js=1 
+0

이러한 이미지는 PHP와 함께 제공됩니까? 헤더 문제 일 수 있습니다. – Jacob

+0

헤더를 확인하고 위의 원래 질문에 삽입했습니다. 자바 스크립트 문제와 유사 해 보인다. 아약스가 이미지를 얻는 데 사용하는 PHP URL이 새로운 브라우저 창에 붙여 넣기 할 때 전체 이미지를 잘 보여준다. – sysasa

답변

2

thickbox (자바 스크립트) 문제인 것처럼 보입니다. PHP와 Apache는 mime을 사용하여 이미지를 인식 할 때 잘 동작합니다.

이미지 URL에 인수가있는 경우 (예 : (http://127.0.0.1/elegancia/?q=system/files/imagecache/product_full/image_1.jpg & random = 1299550719133) - 두꺼운 상자가 두꺼운 상자 이미지 인식 알고리즘으로 인해 헛소리를 표시합니다. 이미지 확장명으로 끝나지 않는 URL은 thickbox 자바 스크립트로하여 이미지가 아닌 다른 mime 유형처럼 이미지를 처리합니다.

해결하려면 thickbox.js가 믿을 수 있도록 선택 목록에 "|| urlType == '/ preview'"을 추가하여 /modules/thickbox/thinkbox.js의 53 행을 수정해야합니다. 마음 속에는 Drupal로 인코딩 된 이미지 링크가 실제로 이미지이고 사기꾼이 아닙니다. 이것에

if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images 

: 또한

if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp' || urlType == '/preview'){//code to show images 

이에 라인 (50)을 수정

var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.bmp|\/preview/g; 

을 이미지 크기를 가정

에서 "미리보기"변화 라인 (53)입니다 ("/ 미리보기", "/ 분기"또는 이미지 모듈을 구성하여 다양한 크기를 만들고 이름을 지정하는 "/ 미리보기"로 대체하십시오.

+0

나는 Thickbox에서 한번도 같은 문제가 있었다. Thickbox는 더 이상 유지되지 않으므로, 제작자는 몇 가지 대안을 사용할 것을 권장합니다 (http://jquery.com/demo/thickbox/ 참조). –

+0

오. 정보를 주셔서 감사합니다. 그것에 대해 전혀 몰랐습니다. 나는 이제 drupal에 대해 lightbox/2로 갈 것이다. – sysasa

+0

유사한 대체품은 http://stellapower.net/node/30을 참조하십시오. – sysasa

0

는 JPEG 이미지로 처리해야 할 때 브라우저가 텍스트로 파일을 렌더링합니다. 브라우저에 내용을 렌더링하는 방법을 알려면 'Content-Type : image/jpeg'헤더를 보내야합니다. 웹 서버 구성을 확인하십시오. /etc/mime.types에서, 다음

LoadModule mime_magic_module modules/mod_mime_magic.so 
LoadModule mime_module modules/mod_mime.so 

... 

TypesConfig /etc/mime.types 

을 그리고 :

아파치를 들어, httpd.conf 파일이 같은 라인을 가져야한다

image/jpeg   jpeg jpg jpe 

을이 모두있는 파일에 적용 웹 서버에서 직접 제공합니다. 브라우저에 URL을 입력하고 이미지를 볼 수 있으면 문제가 없습니다.


파일이 스크립트에 의해 제공되는 경우 헤더가 스크립트에 의해 전송되는지 확인해야합니다. PHP의 경우 :

header('Content-type: image/jpeg'); 
echo file_get_contents($image_path); 
+0

첫 번째 부분에서는 /etc/apache2/mods_available/mime.load에 대한 링크와/etc/apache2/mods-enabled/아래에있는 mime_magic.load 링크를 사용하여 활성화합니다. 두 번째 부분에 대해서는 /etc/mime.types에 이미 언급 된 행이 있습니다. 이 파일은 아파치에 의해 지시된다. 아파치를 다시 시작했지만 문제가 지속됩니다. – sysasa

1

또 다른 해결책은 URL에 path_info 추가를 추가하여 이미지 유형을 지정하는 것입니다. 예를 들어, 내 URL 이전했다 :

/image.php/image.gif?foo=bar

참고 :

/image.php?foo=bar 나는 그것을 변경 기본적으로 path_info의 사용을 제한하는 Apache와 같은 웹 서버를 사용하는 경우 영향을받는 경로에 대한 AcceptPathInfo 지시문을 사용하여이를 켜야 할 수도 있습니다.

업데이트 된 버전으로 교체 될 수있는 모듈을 변경하면 수정 사항이 손실 될 수 있으므로 path_info를 변경하면 모든 업그레이드가 계속 작동해야하므로 Thickbox 소스를 변경하려면이 솔루션을 사용하는 것이 좋습니다.

관련 문제