2013-03-16 6 views
7

私はphp fopenの相対パスと絶対パスにいくつか問題があります。 私は、次のディレクトリがあります:私はmyscript.phpからmylog.logを開きたいphp fopenでパスを書き込む方法は?

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

を、私はパスを指定する方法がわかりません。試しました

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

ただし、動作しません。おかげさまで

LE:お返事ありがとうございます。

+1

は決して、「それは動作しません」の代わりにエラーメッセージがあるかもしれませんがありません。 – str

+0

エラーを返しますか?エラーには、解決されたパスにアクセスする必要があります。また、権限を確認してください。 – Anthony

+0

@str - あなたは冗談ですか?私はTON *を手に入れていません。 – Anthony

答えて

19

PHPで、助けになる可能性がグローバル定数のカップルがありますあなたへ。つまり、__DIR__は、現在のファイルのディレクトリを提供します('.'は、実行するルートスクリプトのディレクトリを提供します)。

だから、あなたが望むものである:

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

確かに。 'dirname(__ FILE __)'は5.3.0のPHPインストールへの移植性のために使用できます。 – TaZ

4

$_SERVER['DOCUMENT_ROOT']を使用すると、仮想ホストのドキュメントルートを指定できます。

例:これは動作するはず$_SERVER['DOCUMENT_ROOT']."/log/mylog.log"

+2

あなたは彼がコマンドラインではなくWebサーバー経由でこれを実行していると仮定しています。 –

6

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

またはPHP < 5.3で:

fopen(dirname(__FILE__) . '/../logs/mylog.log', "a"); 
関連する問題