Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Apache]Link do pliku na komputerze lokalnym
Forum PHP.pl > Forum > Przedszkole
Jero
Mam taki problem.
Robię bazę danych plików dźwiękowych, które są na lokalnym komputerze, który w żaden sposób nie jest... i nie ma być podłączany do internetu. Bazę oparłem o interfejs przeglądarkowy na Apache/PHP/MySQL. Sprawa jest następująca:
Z formularza, z pola file pobierana jest ścieżka do pliku. Ścieżki są przechowywane w bazie mysql. Problem polega na tym, że ta ścieżka potraktowana jako link nie powoduje otwarcia żądanego pliku. Link ma w tym momencie postać: file:///c:/Jakisfolder/jakisplik.wav, po kliknięciu nic się nie dzieje.
Nie mogę robić odnośników wewnątrz folderu ze stroną - bo to muszą być ścieżki do pliku - pliki są w różnych miejscach i na różnych dyskach. Strona ma tylko umożliwiać ich szybkie wyszukanie i otwarcie. Czy jest to jakieś zabezpieczenie serwera Apache przed uruchamianiem lokalnych plików? Gdy taki sam link robię na zwykłym pliku html, zapisanym byle gdzie, otworzonym w przeglądarce (bez udziału serwera) to wszystko działa... pliki się otwierają.
Czy da się to zrobić za pośrednictwem serwera Apache? Tak, aby uruchamiał pliki lokalne...
Zyx
Jest to zabezpieczenie wprowadzane przez niektóre przeglądarki (np. FF, Opera) - pliki ściągane poprzez protokół HTTP nie mogą generować odnośników do zawartości na dysku lokalnym użytkownika. Czytałem gdzieś, że w niektórych dla konkretnych witryn można to wyłączyć, ale np. w Operze takiej opcji nie doszukałem się.

Co bym Ci polecił... skoro skrypt działa lokalnie i nikt nie będzie tam manipulować żadnymi danymi, możesz sobie spokojnie wyłączyć w php.ini opcję "open_basedir" i napisać skrypt, który ewentualnie odczytywałby żądane dane z dysku. Wtedy Twój odnośnik wyglądałby następująco:

Kod
<a href="pobierz.php?path=c:/costam/costam.wav">Kliknij!</a>


Transmisja wprawdzie będzie szła przez skrypt, ale przynajmniej będziesz mieć dostęp do danych na własnym dysku niezależny od przeglądarki.
Maxik
Zamiast file:///c:/Jakisfolder/jakisplik.wav daj file://localhost/C:/Jakisfolder/jakisplik.wav może zadziała.
Zyx
Kurde, jak przeglądarki blokują dostęp do lokalnych plików, to czemu ma zadziałać? Zresztą, sprawdzałem - i jest tak, jak mówię.
Maxik
Może dlatego, że jak wybieram opcję Otwórz z menu Plik przeglądarki to w pasku pojawia się włąśnie taki adres, więc chyba nie blokują, nie?
Zyx
Okienko Otwórz w Plik nie ma nic wspólnego z linkiem do lokalnych treści ściągniętych wraz z kodem HTML przez protokół HTTP. A o właśnie takich rzeczach mówimy, takie coś chce zrobić Jero i takie coś jest blokowane.
Jero
Co ciekawe plik nie otwiera się w przeglądarce, ale gdy wybierze się "Zapisz element docelowy jako" to plik się zapisuje.
Stwierdziłem, że będę musiał wprowadzić rygor zapisywania przez korzystających z komputera danych na jednej partycji (która będzie jednocześnie Document root'em). W ten sposób będe miał dostęp do całej struktury folderów.

Zastanawiam się czy byłoby możliwe przypisać do każdej partycji takiego document root'a (np. poprzez konfigurację virtualnych hostów w Apache i przypisanie każdemu dyskowi jakąś nazwe - domenę). Wtedy zamiast localhost/... by było np. dysk_d/..., dysk_e/..., dysk_f/...
Nie wiem czy to możliwe, a teraz nie chce mi się próbować, bo mam mało czasu. Jak ktoś jest ciekawy to niech spróbuje i opowie... smile.gif
Pozdrawiam i dziękuję za odpowiedzi.
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.