PDA

Zobacz pełną wersję : file_exists a include - czemu nie działa?



ciubas
04-06-2011, 13:07
Mam skrypt przykładowy:



if (file_exists("pliki/".$plik.".php"))
{
include("pliki/".$plik.".php");
} else {
include("pliki/main.php");
};


i teraz mój problem: include to plik mi widzi normalnie tak jak jest, jak robię file_exists za każdym razem pliku mi nie widzi, obojętne jaki dam ;/

Czemu się tak dzieje, szukałem rozwiązania, ale żadne nie odpowiada na mój problem;/

danieladrianka
04-06-2011, 13:47
a tak: ?:


$x="pliki/".$plik.".php";
$test = file_exist($x);
if ($test) {
kod gdy plik istnieje
}
else {
kod gdy nie istnieje
}

bardziej czytelne i powinno działać ;)

ciubas
04-06-2011, 15:38
danieladrianka - no bez przesady - ja serio pytam...

neo_fox
04-06-2011, 16:46
Jeśli "include" faktycznie potrafi załadować plik to file_exists musi zwrócić "true".
Nie ma innej możliwości.
Jedyne co mi do głowy przychodzi jest fakt że include nie jest poleceniem które przerywa wyknonywanie skryptu. Także być może include także nie działa a Ty po prostu nie widzisz błędu.

krzysztof_klosek
05-06-2011, 11:17
samo
include("pliki/main.php"); działa? jeśli nie, to problem ze ścieżką

samo
include("pliki/".$plik.".php"); działa? jeśli nie, to problem ze zmienną $plik

usuń ; na końcu

ciubas
05-06-2011, 12:54
No właśnie głupota totalna, tylko file_exists nie widzi pliku, include w obojętnie jakiej formie napiszę go to widzi - stąd moje pytanie tutaj, czy joomla to jakoś ogranicza czy o co chodzi?

neo_fox
05-06-2011, 13:13
A zobacz czy tak działa:



file_exists( dirname( __FILE__ )."/pliki/{$plik}.php")

danieladrianka
05-06-2011, 17:29
kod który podałeś w pierwszym poście działa bezproblemowo w joomla - sprawdzałem przed chwilą więc błąd leży po twojej stronie

oczywiście katalog "pliki" leży w głównym katalogu z instalacją joomla(root)
a zmienna $plik dostarczana jest jako ="nazwa" (bez rozszerzenia)

Działa na 100%.

przy okazji w joomla powinno stosować sprawdzanie istnienia pliku (lub katalogu) za pomocą metody JFile::exist() po wcześniejszym zaimportowaniu odpowiedniej klasy - jimport('joomla.filesystem.file');

ciubas
06-06-2011, 00:27
neo_fox - zadziałało, bardzo dziękuje!

danieladrianka - dzięki za info, zobaczę jako to działa to JFile :)