오늘 매우 이상한 BUG를 발견했습니다. 로컬에서 정상적으로 실행되는 PHP 프로그램을 작성했는데 A측 서버에 게시하면 인증 코드가 표시되지 않습니다. . 벌레.
관련 추천: "ThinkPHP 튜토리얼"
구체적인 성능은 추가로 확인 브라우저 작은 깨진 그림 아이콘이 표시됩니다. 그림을 마우스 오른쪽 버튼으로 클릭하면 새 창에서 열립니다. 이는 여전히 작은 깨진 그림이며 오류 메시지가 아닙니다(xdebug 확장 및 PHP 오류 보고가 활성화된 경우). 인증코드를 기재해주세요. URL 라우팅 및 비즈니스 로직 코드에는 문제가 없으나 인증코드 생성 과정에 문제가 있습니다.
1. GD 라이브러리가 올바르게 설치되었습니다. Linux에서는 yum 또는 apt를 사용하거나 pecl 또는 기타 방법을 통해 설치하는 것이 좋습니다. Windows에서는 일반적으로 사용되는 확장 기능이 통합되어 있어 마우스 오른쪽 버튼을 클릭하여 열 수 있습니다. 마우스. (인증코드 이미지를 새 창에서 열었을 때 오류 메시지와 글자가 깨져 보이는 경우에 해당됩니다. 오류 메시지가 있는 경우 해당 오류 메시지에 따라 디버깅해주세요)
#🎜 🎜#
2. 인증코드로 호출된 글꼴이 누락되었는지 확인하세요. 인증 코드 구성요소에서 호출되는 일부 글꼴이 대상 컴퓨터에 설치되어 있지 않습니다. 이를 위해서는 인증 코드 모듈의 소스 코드 분석이 필요합니다. 저는 ThinkPHP의 공식 think-captcha를 사용하고 있습니다. Vendortopthinkthink-captchasrc에서 소스 코드를 찾을 수 있습니다. 이 검증 코드 플러그인은 자체 글꼴과 함께 제공되므로 ThinkPHP의 검증 코드는 기본적으로 필요하지 않습니다. 글꼴 문제, 다른 인증 코드 플러그인인 경우에도 이 곳을 확인해야 합니다. 3. 버그가 있는 인증코드 이미지와 로컬 테스트 일반 인증코드 이미지를 다운받아 메모장으로 비교해보세요. 위 사진은 로컬 환경에서의 인증코드 이미지 메모장으로, 파일 차이를 분석하기 위해 보다 전문적인 16진수 편집기를 사용하고 있습니다. 사진과 같이 불량파일 앞에 EF BB BF 및 기타 숫자가 추가된 것을 제외하고는 다른 내용이 완전히 동일합니다. 이는 PHP가 그림을 렌더링할 때 추가로 렌더링된다는 것을 의미합니다. 그 이유는 아마도 서버에 전문적인 코드 편집기가 없기 때문에 운영 및 유지 관리 담당자가 일반 코드를 사용했기 때문일 것입니다. Windows 메모장을 사용하여 PHP 코드를 수정하면 추가 BOM 헤더가 생성됩니다. 세 번째 이유라면 두 가지 해결 방법이 있습니다. 하나는 인증 코드의 imagepng 출력 이미지 코드를 호출하기 전에 ob_clean을 사용하여 PHP의 출력 버퍼를 지우는 것입니다. 코드의 BOM을 일괄적으로 제거하기 위해 일부 도구를 사용하는 경우도 있습니다. 여기서는 ob_clean을 사용하고, think-captcha의 메인 파일 Captcha.php의 203번째 라인 앞에 ob_clean()을 추가하면 됩니다. 단번에 . 성능과 안정성에 대한 엄격한 요구 사항이 있는 경우 BOM을 일괄 제거하는 도구를 사용하는 것이 더 안전합니다. 동시에, 언제든지 서버에 editplus와 같은 전문 코드 편집기를 설치하는 것도 권장됩니다. 코드를 수정하기 위해 Windows 메모장을 사용하지 마십시오.위 내용은 thinkphp가 이미지를 표시할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!