bestand openen bij __destruct gaat niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kasper Heyndrickx

Kasper Heyndrickx

22/08/2010 21:08:55
Quote Anchor link
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

21/11/2024 15:18:01
 
Mark PHP

Mark PHP

22/08/2010 21:22:34
Quote Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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 Anchor link
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

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.