bestand openen bij __destruct gaat niet

Overzicht Reageren

Kasper Heyndrickx

Kasper Heyndrickx

22/08/2010 21:08:55
Quote
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?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!
 
PHP hulp

PHP hulp

09/02/2012 09:42:33
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Mark PHP

Mark PHP

22/08/2010 21:22:34
Quote
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.
 
Kasper Heyndrickx

Kasper Heyndrickx

22/08/2010 21:28:00
Quote
Zoals dit dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_SERVER
["DOCUMENT_ROOT"]."/pages/template/template.tpl";
?>


Dit lukt ook niet? :(
 
SilverWolf NL

SilverWolf NL

22/08/2010 22:40:35
Quote
Probeer dit eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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";
        }
    }
}


?>
 
Kasper Heyndrickx

Kasper Heyndrickx

02/09/2010 17:47:38
Quote
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)!
 
Pim -

Pim -

02/09/2010 17:58:20
Quote
Sowieso raad ik je aan zo min mogelijk __destruct() te gebruiken, omdat het soms heel onvoorspelbaar is wanneer dit wordt aangeroepen.
 
Kasper Heyndrickx

Kasper Heyndrickx

02/09/2010 21:31:05
Quote
Maar ik vind het maar lelijk om dan een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $class->showoutput(); ?>

Ofzo :(

Bestaat er dan een andere manier?

mvg Kasper
 
Pim -

Pim -

02/09/2010 22:30:33
Quote
Hoezo is dat lelijk? Je hebt toch gewoon bepaalde functionaliteit die je op het juiste moment oproept?
 
Kasper Heyndrickx

Kasper Heyndrickx

03/09/2010 18:28:57
Quote
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!
 



Overzicht Reageren

Get Adobe Flash player