2012-01-15 3 views
1

imagettftext() 함수를 사용하여 사용자 지정 captcha 스크립트를 만듭니다.imagettftext() - 글꼴 위치를 찾을 수 없습니다.

나는 실행하고 (버전 5.3.8) PHP를 실행, 내 PC에 성공적으로 코드를 테스트하지만 PHP를 실행 내 공유 호스팅 계정 (버전 5.2.17)에 업로드 할 때 다음과 같은 오류와 함께 제공

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /home/pheelco/public_html/captcha.php on line 17 

이것은 17 행입니다.

imagettftext($img, 25, 0, 0, 25, $text, "fonts/alger.ttf", $num); 

분명히 해당 글꼴로 업로드 된 "font"폴더가 public_html 폴더에 있습니다.

아이디어가 있으십니까?

참고 : 공유 호스팅 계정을 사용하고 있기 때문에 PHP 구성을 변경할 수있는 권한이 없습니다.

답변

0

해결. 파일 이름은 대문자로 된 파일 확장명이 "alger.TTF"인 것으로 밝혀졌으며 코드에서 소문자 확장명을 사용하고있었습니다. 몇 가지 이유로 PHP 5.3.8에서는 작동했지만 PHP 5.2.17에서는 그렇지 않습니다.이 문제를 해결할 다른 사람에게 도움이되기를 바랍니다.

3

imagettftext 문서는 말한다 :

fontfile

사용하고자하는 트루 타입 글꼴의 경로. fontFile에이 선도/다음 .TTF가 에 추가됩니다 파일 이름으로 시작하지 않고 라이브러리가 라이브러리에 따라 그 이름 를 검색하려고 할 때 어느 GD 라이브러리 PHP의 버전에 따라

는 사용 정의 된 글꼴 경로.

2.0.18보다 낮은 버전의 GD 라이브러리를 사용할 때 세미콜론 대신 문자가 공백 구분 기호 ' '으로 사용되었습니다. 이 기능을 실수로 사용하면 경고 메시지가 나타납니다. 경고 : 글꼴을 찾지 못했거나 열 수 없습니다. 이 영향을받는 버전 의 경우 유일한 해결책은 공백을 포함하지 않는 경로로 글꼴을 이동하는 것입니다.

글꼴이 스크립트 을 사용하는 동일한 디렉토리에있는 많은 경우에 다음 트릭은 포함 문제를 완화합니다.

<?php // Set the enviroment variable for GD 
putenv('GDFONTPATH=' . realpath('.')); 

// Name the font to be used (note the lack of the .ttf extension) 
$font = 'SomeFont'; ?> 

당신이 시도 했습니까? gd_info을 사용하여 작업중인 GD 버전을 확인할 수 있습니다.

+0

하위 폴더에 있지만 같은 폴더에 있지 않습니다. –

+0

@MichaelRuta : 다음을 보충하십시오 :'putenv ('GDFONTPATH ​​='. realpath ('.'). '/ fonts')' – Jon

+0

해결되었습니다. 파일 이름이 "alger.TTF"로 대문자로 된 파일 확장명으로 밝혀졌으며 코드에서 소문자 확장명을 사용하고 있습니다. 몇 가지 이유로 PHP 5.3.8에서는 작동했지만 PHP 5.2.17에서는 작동하지 않았습니다. 이 문제를 해결하는 데 도움이되기를 바랍니다. –