Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: require_once - nie ma pliku?!
Forum PHP.pl > Forum > PHP
czachor
Witam
Mam pewien problem... Siedzę nad nim od pewnego czasu i nie potrafię tego ruszyć...
Konkrety:
struktura plików:
Kod
\
-classes (katalog)
---jakieś.class.php
---pliki.class.php

-includes (katalog)
---config.inc.php
---cat.inc.php

-index.php (w katalogu głównym)


plik index.php (katalog główny)
  1. <?php
  2. function autostart($dir) // $dir - nazwa katalogu
  3. {
  4. if ($handle = opendir($dir))
  5. {
  6. //test:
  7. //echo 'znaleziono katalog ' . $dir . '... ';
  8.  
  9. while (($file = readdir($handle)) != FALSE)
  10. {
  11. if ($file != '.' && $file != '..')
  12. {
  13. require_once($file);
  14. };
  15. };
  16.  
  17. closedir($handle);
  18. unset($handle, $dir, $file);
  19. };
  20.  
  21. // wywołuję funkcję autostart:
  22. autostart('classes');
  23. autostart('includes');
  24. ?>

Pierwsze wywołanie z parametrem 'classes' odnosi sukces (pliki zostają zainkludowane).
Drugie wywołanie zwraca błąd:
Cytat
Warning: autostart(config.inc.php): failed to open stream: No such file or directory in C:\Serwer\Apache2\htdocs\doc\lbn\index.php on line 13

Fatal error: autostart(): Failed opening required 'config.inc.php' (include_path='.;c:\php4\pear') in C:\Serwer\Apache2\htdocs\doc\lbn\index.php on line 13

[numeracja linii identyczna]
Nie mam pojęcia, co jest nie tak... worriedsmiley.gif Pliki na pewno istnieją... Jestem pewien, bo gdy zmienić tą 13 linię na
  1. <?php
  2. echo ' #znaleziono plik ' . $file;
  3. ?>
dostanę listę tych plików...
I problem istnieje tylko z plikami w tym katalogu...

Z góry dzięki za wszelką pomoc.
netzah
Oto moja teoria (z manuala):

Files for including are first looked in include_path relative to the current working directory and then in include_path relative to the directory of current script.

czyli sprobuj dopisac sciezke do includowanyc plikow.
czachor
Niestety, dalej ten sam błąd. Najbardziej mnie zastanawia to, dlaczego bezproblemowo zainkluduje katalog 'classes', a przy 'includes' wywala się...
Dodam jeszcze, że inkludowanie ręczne plików z katalogu 'includes' (require_once('plik.php')) idzie bezproblemowo... Automatyka pada...

W każdym razie dzięki @netzah.
netzah
Zrobilem tak:
require_once($dir.'/'.$file);
zamiast
require_once($file);

katalogi i kod takie jak Twoje i: z $dir dziala OK, bez - nie dziala
jezeli podasz poprawna sciezke, to nie ma mozliwosci, zeby plik sie nie includowal. Pamietaj w jakich katalogach include szuka pliki - moze dlatego jeden katalog dziala Ci a drugi nie.
czachor
@netzah - dzięki wielkie!! działa smile.gif
Okazuje się, że jak zwykle problem leży w prostej rzeczy rolleyes.gif
Jak tylko ruszy 'Pomógł mi', kliknę co trzeba.
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.