![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 12.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, mam wtyczkę w PHP, która działa dobrze na serwerze Apache, część kodu odpowiedzialna za wykrywanie rozszerzenia zdalnego obrazka:
jednak problem pojawia się, gdy użyje jej na serwerze nginx, a dokładnie gdy obrazek nie ma rozszerzenia JPG tylko PNG, to skrypt nie wykonuje się dalej, a w logach wysypuje błędem: Kod ErrorException: Fatal Error: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x50 - library/Andy/ConvertImage/DataWriter.php:216 W php.ini mam wyłączyłem pokazywanie błędów (display_errors Off), jednak to nic nie dało, czy jest jakiś sposób, aby skrypt się wykonywał dalej? Dokładna linijka odpowiedzialna za błąd to: Kod $im = @imagecreatefromjpeg($tempFullPath); tak jakby małpa nie wyłączała błędów na nginxie... (IMG:style_emoticons/default/sad.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Zajrzałem do dokumentacji biblioteki gd i okazało się, że w runtime configuration jest tylko jedno ustawienie, które można kontrolować:
Kod gd.jpeg_ignore_warning Od php7.1 jest domyślnie ustawione na 1, ale wcześniej było 0. Może masz różne wersje php na różnych serwerach? Albo różne ustawienia w ini? To ustawienie nazywa się wprawdzie "warning" ale może dotyczy też errorów. Musisz sprawdzić. Spróbuj do php.ini dodać Kod gd.jpeg_ignore_warning=1 albo gdzieś w kodzie dodać Kod ini_set('gd.jpeg_ignore_warning', 1); Ale ja bym zrobił tak jak @nospor napisał - przechwycił ten wyjątek, bo po to wyjątki są. A najlepiej byłoby zapobiec powstawaniu tego błędu, czyli uzależnić wykonanie wierszy 16-20 od wyniku sprawdzenia, czy plik jest rzeczywiście jpgiem np. funkcją exif_imagetype. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 19:38 |