Hallo

Altijd als ik een bestand wil openen bij het afsluiten van het script, dan faalt hij altijd. Bij het onderzoeken heb ik ontdekt dat hij ineens niet meer in mijn map zit, maar in de apache map.

Dit is een beknopte weergave:

test.class.php

<?php

class test{
	function read_this(){
		if(file_exists("template/template.tpl")){
			echo "oke";
		}else{
			echo "niet oke";
		}
	}

	function __destruct(){
		if(file_exists("template/template.tpl")){
			echo "oke";
		}else{
			echo "niet oke";
		}
	}
}

?>


index.php

<?php
include_once("test.class.php");

$test = new test;

echo "read_this result: <br />";
echo $test->read_this();

echo "end class restult: <br />";
?>


Als ik index.php aan roep, zou ik normaal 2 resultaten moeten zien. Maar ik zie er maar 1, die van read_this(). Dus bij het afsluiten van de class vindt hij het bestand dus niet.

Hoe kan ik dit oplossen? En wie kan me helpen?

Alvast bedankt!
Quote vanuit de manual: "The working directory in the script shutdown phase can be different with some SAPIs (e.g. Apache)."

Oftewel, gebruik een absoluut pad.
Zoals dit dan?


<?php
$_SERVER["DOCUMENT_ROOT"]."/pages/template/template.tpl";
?>


Dit lukt ook niet? :(
Probeer dit eens:
<?PHP

class test{
private $cwd;
public function __construct(){
$this->cwd=getcwd();
}

public function read_this(){
if(file_exists($this->cwd . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "template.tpl")){
echo "oke";
}else{
echo "niet oke";
}
}

public function __destruct(){
if(file_exists($this->cwd . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "template.tpl")){
echo "oke";
}else{
echo "niet oke";
}
}
}

?>
Sorry voor het late bericht.

Blijkbaar lukt het met $_SERVER["DOCUMENT_ROOT"] al. Hoe het kwam dat hij de eerste keer niet ging begrijp ik ook niet maar bon.

Maar al bij al vind ik de tweede manier veel handiger.

Bedankt voor de (meerdere) oplossing(en)!
Sowieso raad ik je aan zo min mogelijk __destruct() te gebruiken, omdat het soms heel onvoorspelbaar is wanneer dit wordt aangeroepen.
Maar ik vind het maar lelijk om dan een

<?php echo $class->showoutput(); ?>

Ofzo :(

Bestaat er dan een andere manier?

mvg Kasper
Hoezo is dat lelijk? Je hebt toch gewoon bepaalde functionaliteit die je op het juiste moment oproept?
Ja, dat weet ik. Maar ik zou liever hebben dat hij dat van zelf zou doen, dus dat hij iets eenvoudiger zou zijn voor derden, indien nodig. Maar ik zal wel een oplossing vinden.

Bedankt voor jullie reacties!

Reageren