![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 11.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Ostatnio natknąłem się na dość dziwny problem. Na podstawie tego co jest opisane na http://pl.php.net/manual/pl/function.header.php stworzyłem na swoje potrzeby skrypt do wypluwania pliku.
Gdzie $link, to ścieżka do pliku na serwerze. Cały skrypt jest "wewnątrz" ob_start(). Ostatnio zauważyłem, że niektóre pliki (typ nieistotny) po ściągnięciu są uszkodzone, np. plik .zip wykazuje uszkodzenie archiwum. Poszukałem trochę i znalazłem inny, dość ciekawy przykład wypluwania plików, który działał, ale...Na moim kompie, gdzie Apache stoi na Win wszystko jest ok, ale na serwerze, który stoi na Linuxie pojawia się komunikat, że nie można odczytać pliku źródłowego. (Nie wiem czy różnica w systemie ma akurat znaczenie - podałem na wszelki wypadek) Ciekawostka - Opera pobiera plik; FF i IE nie chce. Po krótkiej analizie, okazało się, że taki efekt powoduje dodanie ob_end_clean(), czyli wyłączenie buforowania przed podaniem pliku. Gdzieś wyczytałem, że to może być wina Content-Length, ale usunięcie tego nagłówka nie pomaga. Czy to może być wina źle skonfigurowanego serwera? Nie mam specjalnie pomysłu gdzie by jeszcze się zaczepić w poszukiwaniu problemu, dlatego proszę o jakieś sugestie. ![]() Ten post edytował TheTester 11.03.2009, 12:39:54 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
http://pl.php.net/manual/pl/function.readfile.php#74675 - dodaj exit();
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 11.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie pomaga. Nadal efekt jest taki sam, czyli pobiera uszkodzony plik. Nadal dodanie ob_end_clean() pod Win podaje prawidłowy plik, a pod Linuxem przeglądarka zwraca niemożność odczytania pliku źródłowego.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wyedytuj sobie dowolnym edytorem ten uszkodzony plik i zobacz, czy czasem nie ma w nim jakiegos komunikatu serwera (np. 500 Internal Server Error). Sprobuj tez z Windowsa skopiowac ten plik do Linuxa i porownac (edytor tekstu) koniec i poczatek pliku. Powiedz pozniej, czym sie roznia miedzy soba
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 11.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok. Już wszystko wiadomo. Miałem echo gdzieś w kodzie wcześniej (fragment kopiowany z innego kodu), który przeoczyłem. To spowodowało dodawanie zawartości echo na początku pliku.
![]() Dzięki za naprowadzenie na trop. ![]() Ten post edytował TheTester 11.03.2009, 14:04:26 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki ddiceman, bardzo mi pomogłeś
![]() Pozdrawiam serdecznie |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.06.2025 - 11:07 |