이전 버전의 이미지 파일을로드하려고 시도했습니다. (JPEG를PHP에서 왜 imagecreatefromjpeg가 "jpeg 파일이 아닙니다"가 치명적인 오류로 변경 되었습니까?
$res = @imagecreatefromjpeg($sourceName);
if ($res === false)
$res = @imagecreatefromgif($sourceName);
if ($res === false)
$res = @imagecreatefrompng($sourceName);
if ($res === false) {
$err[] = 'Cannot load file as JPEG, GIF or PNG!';
이 오랜 시간 동안 완벽하게 작동하는 데 사용하지만, 최근 서버 마이그레이션 후에는 PNG 파일을 사용하는 경우 작동이 중지 : 그것은 어떤 종류 알고하지 않기 때문에, 코드는 그들 모두를 시도 파일은 잘 작동합니다). 선이 오류 억제 연산자를 가지고
Fatal error: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x50
때문에, 스크립트가 단순히 실행 중지 및 빈 응답 HTTP 200을 반환 조사는 매우 첫 번째 줄에 치명적인 오류가 발생 것으로 나타났다.
내가 이해할 수없는 것은 ... 왜 ... 어떻게 ... 왜 ... 언제부터 ... 허?
조차도 official documentation조차도 파일을로드 할 수없는 경우 FALSE
을 반환하고 @
연산자가있는 구문도 표시됩니다. 나는 웹상에서 "JPEG 파일이 아닌"것이 치명적인 오류라고 말할 수있는 것을 찾을 수 없다. 어디에서나 언급했듯이 항상 경고였습니다. 왜 지금 치명적인 오류가 발생합니까?
내 PHP는 5.6.30이며, GD는 모든 것이 있습니다.
[this] (http://stackoverflow.com/a/10668155/2518525)와 [this] (http://stackoverflow.com/a/3901885/2518525)를 살펴볼 가치가 있습니다. (* 버그 처리 jpeg 이미지 *). – Darren
@Darren - 두 링크 모두 실패시 나타나는 ** 경고 **에 대해 이야기합니다. 억제되고 무시 될 수있는 경고. ** 치명적인 오류 **가 발생합니다. 또한, 이미 버그가있는 jpeg가 아니라고 말했습니다. 이것은 PNG이며,이 기능이 실패 할 것으로 예상합니다. 단지 치명적이지는 않습니다. –