2013-03-16 158 views
7

我有一些問題,在PHP fopen的相對和絕對路徑。 我有以下目錄:如何在php fopen中編寫路徑?

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

我想打開從myscript.phpmylog.log,我不知道如何指定的路徑。我試過

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

但它不起作用。 謝謝。 LE:謝謝你的回答。

+1

有沒有「它不工作」,有可能是錯誤消息來代替。 – str 2013-03-16 15:20:12

+0

它是否返回錯誤?該錯誤應該反映正在訪問的解決路徑。另外,檢查權限。 – Anthony 2013-03-16 15:20:21

+0

@str - 你在開玩笑嗎?我得到了* TON *沒有用。 – Anthony 2013-03-16 15:21:07

回答

19

在PHP中,有一對夫婦的全局常量,可能會有所幫助的給你。即,__DIR__爲您提供當前文件的目錄('.'只是爲您提供了執行根腳本的目錄)。

所以,你想要的是:

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

確實。 'dirname(__ FILE __)'可用於5.3.0下PHP安裝的可移植性。 – TaZ 2013-03-16 15:31:10

4

您可以使用$_SERVER['DOCUMENT_ROOT'],它提供虛擬主機的文檔根目錄。

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

+2

你假設他是通過網絡服務器運行而不是命令行。 – 2013-03-16 15:21:38

6

這應該工作:

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

或PHP < 5.3:

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