Lirdoner
26.06.2013, 10:12:04
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
26.06.2013, 10:36:39
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
26.06.2013, 15:48:51
Ś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
27.06.2013, 10:03:43
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
27.06.2013, 13:32:46
Ale z wszystkimi innymi obrazkami to działa, tylko nie z obrazkami które znajdują się na tym serwerze
thek
28.06.2013, 08:05:41
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.