Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]file_exist - zwraca false mimo iż plik istnieje i wyświetla się poprawnie
Forum PHP.pl > Forum > Przedszkole
przemo191
Witam, mam problem z funkcją file_exists, problem polega na tym że funkcja ta zawsze zwraca wartość false.

  1. var_dump (file_exists('1.jpg')); // zwraca false
  2. echo '<img src="1.jpg"/>'; // ale mimo to plik wyświetla się poprawnie


W czym może tkwić problem?questionmark.gif
dr_NO
prosty test:

  1. $file = './1.jpg';
  2. if(file_exists($file)) {
  3. echo '<img src=".'$file'." />';
  4. } else {
  5. echo 'brak pliku';
  6. }


Swoją droga co chcesz zobaczyć, skoro nie masz tam zminnych, anni żadnego "zapytania" ? Wcześniej "echowałeś" //przed edycją...
przemo191
W trzeciej lini masz źle kropki.
Po wklejeniu twojego kodu (i poprawce) wyświetla zawsze "brak pliku", mimo że plik wyświetla się poprawnie w img.

Wcześniej wszystko jest dobrze.
rocktech.pl
Witam.

Problem tkwi w tym, że plik nie istnieje w katalogu __DIR__. Tylko w katalogu / twojej aplikacji.

Daj tak.

  1. $info = new SplFileInfo ( '1.jpg' );
  2. var_dump ( $info->isFile () );
  3. echo __DIR__ . "/1.jpg"; //I zobaczysz, że ten plik nie istnieje
przemo191
Teraz działa i zwraca true, ale dlaczego tak się dzieje?questionmark.gif
Po wyświetleniu obrazu w img jest ok, a po zastosowaniu file_exists zwracało false?questionmark.gif

Niestety kiedy plik nie jest w tym samym katalogu, twoja metoda zwraca false, ale mimo to plik wyświetla się poprawnie po zastosowaniu img.
rocktech.pl
Wykonujesz funkcje file_exist w pliku który leży w innym katalogu (poza przestrzenią www) => __DIR__.
A wyświetlasz go w przeglądarce co skutkuje wykonaniem żądania w stylu "GET /1.jpg" i odpowiedzią zawierającą obrazek pobrany przez Apache`a z katalogu www.
przemo191
A jak zrobić tak aby plik znajdował się w katalogu __DIR__ a nie tylko w mojej aplikacji?questionmark.gif

Tamten kod był dla uproszczenia a kod częściowy kod mojej aplikacji to:

  1. $u=1;
  2. while($ilosc_img1 >= $u){
  3. $info = new SplFileInfo ('../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg');
  4. var_dump ( $info->isFile () );
  5. echo __DIR__ . '../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg';
  6. echo '<img src="../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg"/>';
  7.  
  8. if (file_exists('../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg') == TRUE){
  9. echo '<a href="../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg"><img width="130px" src="../uploated_file/wybarwienia/drewna/'.$nazwa_prod1.'/'.$u.'.jpg"/></a>';
  10. }
  11. $u++;
  12. }


linia 4 zwraca false
linia 6 wyświetla prawidłowo obraz
linia 8 nadal zwraca false
rocktech.pl
Poniższy kod będzie zdecydowanie wydajniejszy.

  1. $nazwa_prod1 = "prod";
  2. $ilosc_img1 = 10;
  3. $i = 0;
  4. $DIR = "pełna ścieżka do katalog gdzie znajdują się pliki .jpg"; //Kluczowa zmienna!
  5. foreach ( glob ( $DIR . "/*.jpg" ) as $file ) {
  6. echo '<a href="../uploated_file/wybarwienia/drewna/' . $nazwa_prod1 . '/' . basename ( $file ) . '."><img width="130px" src="../uploated_file/wybarwienia/drewna/' . $nazwa_prod1 . '/' . basename ( $file ) . '"/></a>';
  7. $i++;
  8. if ( $ilosc_img1 == $i ) {
  9. break;
  10. }
  11. }
przemo191
Teraz działa, dzięki wink.gif
Muszę to przeanalizować i się douczyć co i jak ;p
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.