오늘은 로컬에서 새로운 가상 호스트를 생성하고 이전에 작성했던 작은 PHP 웹사이트를 배포했습니다. 이전에 wamp 통합 환경을 사용했기 때문에 이런 상황은 발생하지 않았습니다. 그런데 갑자기 인증코드를 생성할 수 없는 것을 발견했습니다.
그래서 버그를 찾기 위한 여정을 시작했습니다. 인터넷에서 많은 솔루션을 검색하고 마침내 해결했습니다.
오류 1:
위의 상황이 발생하면 가장 기본적인 실수입니다. 당신은 내가 PHP에 gd 모듈을 설치하는 것을 잊었을 가능성이 있다는 것입니다. Window 환경에서는 php.ini 파일에서
;extension=php_gd2.dll
만 찾아서 앞의 세미콜론만 제거하면 됩니다. Apache를 재시작한 후 phpinfo()에서 찾을 수 있습니다.
Ubuntu 환경이라면 , gd 모듈을 설치해야하며 명령은
sudo apt-get install php5-gd
입니다. 설치 후 위 모듈도 볼 수 있습니다.
오류 2:
위 설치를 완료한 후에도 여전히 작동하지 않는 경우 다음 문제일 수 있습니다.
귀하의 코드는 editpuls 또는 notepad++와 같은 텍스트 편집기를 사용하여 편집되었을 가능성이 높으며, 기본 인코딩 형식은 BOM이 포함된 utf-8입니다.
UTF-8 BOM은 UTF-8 서명이라고도 합니다. 실제로 UTF-8 BOM은 UTF-16 및 UTF-32를 지원하기 위해 추가되었습니다. 편집기 현재 파일에 어떤 인코딩이 사용되는지는 편집기에서 식별하기 편리합니다. 그러나 BOM이 편집기에 표시되지 않더라도 마치 추가 빈 줄처럼 출력이 생성됩니다. 일반적으로 저는 UTF-8 BOM-free 형식을 사용하므로 코드의 인코딩 형식을 BOM-free 형식으로 변경해야 합니다.
실수 3:
위의 두 단계를 수행했지만 여전히 작동하지 않는 경우 비장의 카드를 사용해야 합니다.
캐시를 지우려면 ob_clean()을 사용하세요.
ob_clean 이 함수는 생성된 이미지 파일이 많은 경우 출력 버퍼에 있는 콘텐츠를 삭제하는 데 사용됩니다. 해당 파일에 올바르게 액세스하려면 버퍼를 자주 지워야 합니다.
public function create() { ob_clean(); $a = new verify(); session::set('captcha', strtolower($a->create(4, 15))); view::assign("captcha", $a); view::display("captcha"); exit(0); }
참고: 상위 PHP 버전을 사용하는 경우 정의되지 않은 변수를 사용할 수 없습니다. 그렇지 않으면 공지 오류가 보고됩니다. $new_number 및 $_SESSION['check_checks']를 사용하기 전에 isset으로 판단하거나 사용해야 합니다. 이전 코드에서는 알림 오류를 차단하기 위해 시작 부분에 error_reporting(E_ALL & ~E_NOTICE); 를 추가하므로(권장하지 않음) isset()을 사용하여 정의되었는지 확인하세요. 그렇지 않으면 인증번호가 표시되지 않을 수 있습니다.
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP 인증 코드 이미지가 표시되지 않습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!