그러냐

PHP - Invalid SOS parameters for sequential JPEG 오류 해결 본문

php

PHP - Invalid SOS parameters for sequential JPEG 오류 해결

관절분리 2023. 3. 15. 14:37
반응형

겔럭시에서 이미지편집? 후에 업로드할때 확장자는 jpg 파일이지만 뭔가 다른가보다

 

그래서 편집된 이미지파일, 이를테면 사진위에 무언가 첨가한 이미지 같은 경우 업로드하면 검정이미지파일로 업로드 된다

 

리사이징하는 과정에서 에러가 나는 듯

 

찾아보니 아래와 같이 해결 가능하다

 

 

 

 

 

출처 : https://blog.asamaru.net/2016/03/25/php-invalid-sos-parameters-for-sequential-jpeg/

 

PHP에서 GD를 이용해서 jpg 이미지를 처리할 때 아래와 같은 오류를 만날 수 있다. 나의 경우는 안드로이드에서 jpg 이미지를 PHP로 전송해서 처리하는 과정에서 이 오류를 만났다(안드로이드여 사라져라).

Warning:  imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Invalid SOS parameters for sequential JPEG

이 오류는 PHP Bugs에 Bug #39918 imagecreatefromjpeg doesn't work라는 글로도 등록되어 있다. 일단 PHP Bugs에서는 버그가 아닌 것으로 분류해 놓았지만 대부분의 다른 커뮤니티들에서는 버그라고 이야기하고 있다.

어쨌든 해결 방법은 아래와 같다.

@ini_set('gd.jpeg_ignore_warning', 1);

위 코드를 imagecreatefromjpeg를 사용하기 전에 넣으면 된다(그냥 맨 위쪽). 아니면 php.ini에 위 내용을 형식에 맞게 추가해도 된다.

그런데 문제는 이것만으로는 완전히 해결이 되지 않을 수 있다. 아래와 같은 오류가 추가적으로 날 수 있다.

Warning:  imagecreatefromjpeg(): '/tmp/php6eEm0r' is not a valid JPEG file in ~~

따라서 위 처리 외에도 imagecreatefromjpeg 사용시 @를 붙여 아래와 같이 사용해야 한다.

$source = @imagecreatefromjpeg($sourcePath);

@를 사용하는 것은 권장되지 않지만 이 경우는 어쩔 수 없다(오류 출력 범위를 변경하는 등의 방법이 있으나 이 부분만 이렇게 처리하는게 낫다).

이렇게 처리하고 나면 기능이 원하는대로 정상 동작한다(not a valid JPEG file라고 했지만 실제로는 정상적인 jpg 파일이므로)

반응형