getimagesize i zdjęcia z bazy danych - error 500

0

Witam.

Sprawa wygląda następująco:

  1. W bazie danych MySQL są zapisane zdjęcia (nie linki tylko konkretnie grafika)
  2. Plik zdjecie.php pobiera z bazy odpowiednie zdjęcie dla podanego id i zwraca jako obrazek
  3. Za pomocą getimagesize pobierane są rozmiary obrazka zwracanego przez zdjecie.php
list($width, $height) = getimagesize(PREFIX."/php/zdjecie.php?id=".$tab['id']."&small");
  • ścieżka istnieje (gdy wstawiam ją do IMG to wyświetla zdjęcie)
  • PREFIX zawiera adres to katalogu głównego strony
  • $tab['id'] zawiera istniejący ID w bazie danych

Problem polega na tym, że gdy wchodzę na stronę i ma pobrać wymiary obrazka, strona się ładuje w nieskończoność, a po długim czasie zwraca error 500 (błąd wewnętrzny). Gdy nie używam getimagesize() (zakomentuję tę linijkę), to wczytuje się od razu. Próbowałem też użyć tej funkcji na istniejącym na serwerze pliku JPG i jest ok. Tylko w przypadku plików zwracanych z bazy danych, serwer sobie nie radzi - same pliki, pobiera i wyświetla (jedynie funkcja getimagesize ma z nimi problem).

Bardzo poproszę o jakieś wskazówki i pomysły jak rozwiązać problem lub obejść.

Ps.
Wiem, że przechowywanie obrazków w bazie to nie jest rewelacyjny pomysł, ale to nie mój projekt i niestety jego postać musi pozostać taka jaka jest.

0
SuchyTheMaster napisał(a):

Witam.

Sprawa wygląda następująco:

  1. W bazie danych MySQL są zapisane zdjęcia (nie linki tylko konkretnie grafika)
  2. Plik zdjecie.php pobiera z bazy odpowiednie zdjęcie dla podanego id i zwraca jako obrazek
  3. Za pomocą getimagesize pobierane są rozmiary obrazka zwracanego przez zdjecie.php
list($width, $height) = getimagesize(PREFIX."/php/zdjecie.php?id=".$tab['id']."&small");
  • ścieżka istnieje (gdy wstawiam ją do IMG to wyświetla zdjęcie)
  • PREFIX zawiera adres to katalogu głównego strony
  • $tab['id'] zawiera istniejący ID w bazie danych

Problem polega na tym, że gdy wchodzę na stronę i ma pobrać wymiary obrazka, strona się ładuje w nieskończoność, a po długim czasie zwraca error 500 (błąd wewnętrzny). Gdy nie używam getimagesize() (zakomentuję tę linijkę), to wczytuje się od razu. Próbowałem też użyć tej funkcji na istniejącym na serwerze pliku JPG i jest ok. Tylko w przypadku plików zwracanych z bazy danych, serwer sobie nie radzi - same pliki, pobiera i wyświetla (jedynie funkcja getimagesize ma z nimi problem).

Bardzo poproszę o jakieś wskazówki i pomysły jak rozwiązać problem lub obejść.

Ps.
Wiem, że przechowywanie obrazków w bazie to nie jest rewelacyjny pomysł, ale to nie mój projekt i niestety jego postać musi pozostać taka jaka jest.

Strzelałbym, że błąd wynika ze sposobu zwracania pliku graficznego - plik jest niekompletny czy coś takiego i getimagesize nie wykonuje się poprawnie (np. oczekuje na jakieś domknięcie pliku, którego brakuje).
Próbowałeś pobrać ten obrazek funkcją typu file_get_contents i zapisać go lokalnie, a następnie otworzyć? To w sumie może być jednym ze sposobów ominięcia problemu - pobierz obrazek, zapisz lokalnie i niech getimagesize otwiera gotowy plik graficzny.

2

jesteś pewien, że takie wywołanie skryptu uruchomi go? podejrzewam, że kod nie działa, bo po stronie serwera wczytując plik php dostaniesz jego źródło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1