2013-03-16 1 views
7

Ho alcuni problemi con i percorsi relativi e assoluti in php fopen. Ho le seguenti directory:Come scrivere il percorso in php fopen?

project: 
    scripts: 
     myscript.php 
    logs: 
     mylog.log 

voglio aprire mylog.log da myscript.php e non so come specificare il percorso. Ho provato

fopen('../logs/mylog.log', "a") 

ma non funzionerà. Grazie.

LE: Grazie per le risposte.

+1

non c'è un "non funziona", ci potrebbero essere dei messaggi di errore invece. – str

+0

Restituisce un errore? L'errore dovrebbe riflettere il percorso risolto a cui si accede. Inoltre, controlla le autorizzazioni. – Anthony

+0

@str - Stai scherzando? Ho ottenuto un * TON * di non funziona. – Anthony

risposta

19

In PHP, ci sono un paio di costanti globali che potrebbero essere di aiuto a te. Vale a dire, __DIR__ ti dà la directory del file corrente ('.' ti dà solo la directory dell'esecuzione dello script di root).

Quindi, ciò che si vuole è:

fopen(__DIR__ . '/../logs/mylog.log', "a") 
+0

Infatti. 'dirname (__ FILE __)' può essere usato per la portabilità di installazioni PHP sotto 5.3.0. – TaZ

4

È possibile utilizzare $_SERVER['DOCUMENT_ROOT'] che fornisce la radice del documento dell'host virtuale.

esempio: $_SERVER['DOCUMENT_ROOT']."/log/mylog.log"

+2

Si presume che lo stia utilizzando tramite un server Web e non dalla riga di comando. –

6

Questo dovrebbe funzionare:

fopen(__DIR__ . '/../logs/mylog.log', "a"); 

o in PHP < 5.3:

fopen(dirname(__FILE__) . '/../logs/mylog.log', "a");