Artikel mit dem Tag "Funktion"

file_exists unter Einbeziehung des Include Path

Wer unter PHP hin und wieder mit Dateioperationen zu tun hat, oder auch nur hier und da ‚mal wissen will, ob eine Datei, die eingebunden werden soll, auch wirklich existiert und dabei in mehreren Verzeichnissen danach Ausschau halten möchte, dem ist wahrscheinlich bewusst, wie lange PHP schon darauf warten lässt, dass file_exists() auch auf den Include Path angewendet werden kann.

Ein Eintrag in der PHP Bug Sektion offenbart, dass Entwickler schon Jahre auf dieses Feature warten:

Come on, let’s fix this in under 10 years!

Da ich in letzter Zeit öfters über diese Hürde gestolpert bin, habe ich jetzt eine eigene Funktion geschrieben, die file_exists auf den Include Path anwendet:

function file_exists_ip($filename) {
	if(function_exists("get_include_path")) {
		$include_path = get_include_path();
	} elseif(false !== ($ip = ini_get("include_path"))) {
		$include_path = $ip;
	} else {return false;}

	if(false !== strpos($include_path, PATH_SEPARATOR)) {
		if(false !== ($temp = explode(PATH_SEPARATOR, $include_path)) && count($temp) > 0) {
			for($n = 0; $n < count($temp); $n++) {
				if(false !== @file_exists($temp[$n] . $filename)) {
					return true;
				}
			}
			return false;
		} else {return false;}
	} elseif(!empty($include_path)) {
		if(false !== @file_exists($include_path . $filename)) {
			return true;
		} else {return false;}
	} else {return false;}
}

Vielleicht hilft sie anderen Suchenden da drausen im weiten Web und spart Ihre kostbare Zeit, etwas ähnliches zu kreieren.

Der Aufruf erfolgt genauso wie bei file_exists():

if(file_exists_ip($filename)) {
	//Tu dies
	//Tu das
}

und überprüft dabei alle Ordner, die mittels

init_set("include_path", "a/;b/c/d/;e/;f/g/h/;");

oder

set_include_path("a/;b/c/d/;e/;f/g/h/;");

als Include Path angegeben wurden.

Share
Geschrieben von Philip Ehret am 30.11.-0001 | Kommentare weiterlesen...