Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]getimagesize zwraca false
Forum PHP.pl > Forum > Przedszkole
Lirdoner
Witam, mam taki problem, że funkcja getimagesize zwraca zawsze false z obrazków które znajdują się na moim serwerze.
Zastanawiam się czy to nie jest czasem zasługa htaccess i komendy
Kod
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

Jeżeli to przez to to jak mogę zmienić tą linię aby nie dotyczyło plików graficznych?
Sephirus
Jaką ścieżkę do obrazka podajesz do getimagesize, serwerową czy po http?
Czy obrazki są na tym samym serwerze co skrypt?

Powinieneś używać ścieżki serwerowej (np.: [DOC_ROOT]/katalog/z/obrazkami/obrazek.jpg) a nie z url. Wówczas powinno to działać bez względu co masz w .htaccess. Ponadto jeśli obrazki się wyświetlają to to nie wina .htaccessa na bank - bo by się nie wyświetlały. Gdzieś masz jakiś "głupi" błąd pewnie - pokaż kod.
Lirdoner
Ścieżkę podaję po http
Nie wiem o co może chodzić ponieważ w index.php (na serwerze z tymi obrazkami) na samym początku dodałem linijkę
if(getimagesize('link_do_obrazka')){die(1);}
I getimagesize zwrócił false, natomiast jak dodałem tą samą linijkę do pliku na innym serwerze to zostało zwrócone true
thek
getimagesize jadąc po http, choć nie ma tego napisanego wprost w dokumentacji, zazwyczaj ma problem przy allow_url_fopen na false i dlatego całość klęka.
Lirdoner
Ale z wszystkimi innymi obrazkami to działa, tylko nie z obrazkami które znajdują się na tym serwerze
thek
A sprawdziłeś co Ci zwraca allow_url_fopen dla tego serwera? Może inne mają true a ten serwer wali false. Poza tym może istnieć ochrona przed hotlinkiem. Jeśli odwołanie jest z innej domeny to zwyczajnie reaguje na to i przykładowo strzela nagłówek z 404 lub innym http statusem a dodatkowo error idzie do logów, ale wyświetlanie błędów pewnie masz wywalone i nic nie widzisz przez to. Polecam w takich sytuacjach przy pobieraniu obrazków sprawdzać wyjście. Jeśli nie pobiera Ci obrazka, czyli masz false na getimagesize, to zaciągnij obrazek curlem, który w zasadzie niemal zawsze daje sobie radę w takich sytuacjach (no chyba, że ktoś go świadomie chce wyciąć). Zresztą użycie curla w przypadku allow_url_fopen = false jest powszechnie stosowanym obejściem.

Oczywiście szybszym rozwiązaniem jest zmiana allow_url_fopen na true, ale nie zawsze jest to możliwe (względy bezpieczeństwa przykładowo).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.