Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] link do obrazka na zewnętrznym dysku
Forum PHP.pl > Forum > Przedszkole
unsec
1. na kompie na dysku "c:" postawiony jest serwer www z oprogramowaniem katalogującym pliki w zadanej lokalizacji
2. zadana lokalizacja mieści się na dysku "I:"
3. z lokalizacji programu (c:/wamp/www/cat/index.php) mogę wyświetlić zawartość pliku txt z lokalizacji "I:"
4. ni cholery nie mogę wyświetlić obrazka (png, jpg, gif) z lokalizacji "I:"

  1. echo '<img src=\"' .$link_do_obrazka. '\">';


gdzie np.

$link_do_obrazka = 'I:/katalog/galeria/obrazek.png';

poratujcie zanim do cna osiwieję ....

teraz to testy ale program będzie na serwerze (synology) i będzie sprawdzał katalog na dowolnym, zadanym zewnętrznym dysku ....
Ghost_78
Moim skromnym zdaniem to rozwiązaniem jest tylko stworzenie skrótu / dowiązania tego katalogu docelowego w którymś z katalogow aplikacji. Zadziala to w przypadku twojej testowej aplikacji na lokalu. Jezeli chodzi potem o serwer zewnetrzny to mysle ze bedzie tam tez potrzebny apache i wystawione na nim te zdjecia.
Nie przychodzi mi do czaszki inne rozwiazanie.

[EDIT]:

Inne rozwiazanie, ktore mi teraz zalsnilo jest uzycie GD2. Moglbys zaczytac nim zdjecie z jakiejs innej lokalizacji i wygenerowac jako strumien.
unsec
jak tam Czesiu na smętarzu? smile.gif)))

hmm, na ile się doczytałem tu i tam, to zapewne rozwiązanie problemu leży w konfiguracji Apacza -> ew. Alias itp. W związku z tym że nie zabardzo jestem w stanie to ogarnąć to napiszę co zrobiłem i jakie są tego efekty.

1. katalog do którego chcę "sięgnąć" to "I:/mediatank_20_music"
2. katalog serewa to "www/mediatank_m" czyli inaczej "http://localhost"
2. wpis w httpd.conf

  1.  
  2. DocumentRoot "c:/wamp/www" // to tak żebyście wiedzieli gdzie sięga root
  3.  
  4. Alias /mediatank_20_music "i:/mediatank_20_music"
  5. <Directory "i:/mediatank_20_music">
  6. Require all granted
  7.  
  8. </Directory>
  9.  


4. i efekty

  1. dla linku:
  2.  
  3. <img src="mediatank_20_music/enya/gallery/okladka-450.jpg">
  4.  
  5. efekt:
  6.  
  7. @http://localhost/netjukebox_m/mediatank_20_music/enya/gallery/okladka-450.jpg
  8.  
  9. (404 Not Found) The requested URL /netjukebox_m/mediatank_20_music/enya/gallery/okladka-450.jpg was not found on this server.
  10.  



  1. dla linku:
  2.  
  3. echo '<img src=\"I:/mediatank_20_music/enya/gallery/okladka-450.jpg\"><hr>';
  4.  
  5. efekt:
  6.  
  7. @http://localhost/"I:/mediatank_20_music/enya/gallery/okladka-450.jpg/"
  8.  
  9. (403 Forbidden) You don't have permission to access /"I:/mediatank_20_music/enya/gallery/okladka-450.jpg/" on this server.
  10.  
mar1aczi
Jak wkleisz w pole adresu
Kod
http://localhost/mediatank_20_music/enya/gallery/okladka-450.jpg

to widzisz obrazek?

Na mój gust szpąci tu wstawka "/netjukebox_m" do linka.
unsec
gościu, piersze pifo już masz smile.gif))) , link działa wyśmienicie

teraz łaskawie pokombinuj dalej ...


a tak przy okazji. muszę jeszcze uwzględnić następujące podwiązania:

I:/mediatank_10_ebook
I:/mediatank_40_video

czy wystarczy dla nich zduplikować ustawienia jak dla "I:/mediatank_20_music" ew. czy można wszystko ogarnąć jakoś w jednym wpisie do httpd.conf?
mar1aczi
Cytat(unsec @ 21.10.2013, 13:12:38 ) *
gościu, piersze pifo już masz smile.gif)))
teraz łaskawie pokombinuj dalej ...

Za piwo już pomogłem smile.gif
Kombinować przy Twoim problemie dalej mogę za $$$ biggrin.gif

Używasz jakiegoś dodatkowego skryptu do wyświetlania obrazków? (nic o tym nie wspomniałeś, a tak to wygląda)
Szklana kula już dano poszła w odstawkę, zatem nie wiem jaki masz układ katalogów pod stronę i z czego korzystasz. Ten brak wiadomości uniemożliwia dalsze moje kombinowanie.
unsec
wyświetlenie obrazka ma być w ramach pliku "index.php" zlokalizowanego na serwerze w katalogu "netjukebox_m" czyli "www/netjukebox_m".
mar1aczi
Cytat(unsec @ 21.10.2013, 13:24:51 ) *
wyświetlenie obrazka ma być w ramach pliku "index.php" zlokalizowanego na serwerze w katalogu "netjukebox_m" czyli "www/netjukebox_m".

Z tym, że fizycznie pliki leżą na dysku "I:\" w odpowiednich katalogach?

Jeśli tak jest, jak napisałem, to w apache zrób alias
Kod
Alias /netjukebox_m "i:/"

i odwołuj się do plików jak dotychczas.
unsec
pliki graficzne leżą sobie w różnych katalogach na dysku "I:/", wspólny początek ścieżki to "I:/mediatank_20_music" resztę ścieżki dostaję jako zmienną np. nazwę artysty, stąd bierze się "I:/mediatank_20_music/enia/gallery/plik_graficzny.jpg"

po zmianie aliasu z poprzedniego na podany przez ciebie:

  1.  
  2. Alias /netjukebox_m "i:/"
  3. <Directory "i:/">
  4. Require all granted
  5.  
  6. </Directory>
  7.  


nie mam dostępu do pliku "index.php" -> (404 Not Found) The requested URL /netjukebox_m/index.php was not found on this server
mar1aczi
Jeszcze raz, po kolei od początku.
Pliki strony masz w "DocumentRoot" czyli w "c:/wamp/www"?

Alias /mediatank_20_music "i:/mediatank_20_music" wskazuje na miejsce, gdzie są obrazki?
unsec
1. pliki strony mam w DocumentRoot plus oczywiście katalog strony czyli "c:/wamp/www/netjukebox_m/index.php" co jest widoczne jako "localhost/netjukebox_m/index.php"

2. obrazki znajdują się na dysku "I:/" w katalogu "mediatank_20_music" czyli wspólna ścieżka "I:/mediatank_20_music"
mar1aczi
Zatem, jeśli tworzysz alias
Kod
Alias /mediatank_20_music "i:/mediatank_20_music"

to linki do plików musisz mieć tak jak podałem w swoim pierwszym poście, czyli odwołuj się tak:
Kod
src="/mediatank_20_music/enya/gallery/okladka-450.jpg"
unsec
po zmianie w httpd.conf

  1.  
  2. Alias /mediatank_20_music "i:/mediatank_20_music"
  3. <Directory "i:/mediatank_20_music">
  4. Require all granted
  5.  
  6.  
  7. </Directory>
  8.  


jest

  1.  
  2.  
  3. echo '<img src=\"mediatank_20_music/enya/gallery/okladka-450.jpg\">';
  4.  
  5. efekt:
  6.  
  7. @http://localhost/"mediatank_20_music/enya/gallery/okladka-450.jpg/"
  8.  
  9. (403 Forbidden) You don't have permission to access /"mediatank_20_music/enya/gallery/okladka-450.jpg/" on this server.
  10.  
  11. a jak z linku przeglądarki ręcznie usunę cudzysłowy czyli link wygląda tak
  12.  
  13. @http://localhost/mediatank_20_music/enya/gallery/okladka-450.jpg/
  14.  
  15. to efekt:
  16.  
  17. (404 Not Found) The requested URL /mediatank_20_music/enya/gallery/okladka-450.jpg/ was not found on this server.
  18.  
  19. natomiast:
  20.  
  21. @http://localhost/mediatank_20_music/enya/gallery/okladka-450.jpg
  22.  
  23. jest znów ok ale oczywiście to link pisany z palca w przęglądarce
  24.  


edycja ----------------------------------------------------------------------------------------------------

pomogła zmiana w httpd.conf

  1.  
  2. Alias /netjukebox_m/mediatank_20_music "i:/mediatank_20_music"
  3. <Directory "i:/mediatank_20_music">
  4. Require all granted
  5.  
  6.  
  7. </Directory>
  8.  


oczywiście trzeba dogłębnie przetestowac ale widać mrugające światełko na końcu tunelu. "plusy" dla wszystkich pomagającyhc, dzięki.


edycja ----------------------------------------------------------------------------------------------------

pytanie 1: skoro był widoczny plik txt (i odczytywalny) czemu były problemy z plikami img (oba w tej samej lokalizacji na dysku "I:/")?

pytanie 2: znalezione rozwiązanie wymaga ingerencji w httpd.conf do czego uzytkownik programu nie powinien być zmuszany. Albo trzeba przewidzieć z jakich źródeł zewnętrznych będzie pobierana informacja albo wciąż na bieżąco uaktualniać aliasy. WYkonalne ale brzydkie rozwiązanie. Jakie w takim razie powinno być rozwiązanie problemu nie zmuszające użytkownika do działań a' admin?

PS. sama ściezka dostępu do urządzenia zewnętrznego (w tym przypadku to "I:/mediatank_20_music" podawana jest przez użytkownika przy pierwszym uruchomieniu programu.
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.