2009-08-19 12 views
2

私は「何かが変更されていなければなりません」知っているが、私のコードは、理由もなく一晩壊れているようです。PHP - 謎

私のサーバーのディレクトリ構造はこのようなものです:

/
/スクリプト
/監査
/other_things

私は(スクリプトを持っているのは、それが「/スクリプトと呼ばれていますと言ってみましょう監査 『フォルダスクリプト『カールを使用してWebページからデータを収集し、それが読み込み、Webページの日付のコピーを保存したフォルダ』「中)』 /MyScript.php。監査フォルダに書き込む

は、私は

$ FH =のfopen( "./監査/ 2008-09-09-183000.backup.log"、 "W")

を用います。投げる動作を停止しかし

[function.fopen]

:/home/web/website.co.uk/audit/2008-でそのようなファイルやディレクトリを:ストリームをオープンに失敗しませんライン上09-09-183000.backup.log私はしかし

へのパスを変更することで、これを修正した353

"../audit/2008等" 「./audit/2008" (その代わりに1つ、2つの完全な停止/期間だ)

からLogicは何かがサーバー構成で変更されている必要があることを指示するが、何?それは私が管理する専用サーバーです。このような事態をもう一度避けるにはどうすればいいですか?

私もMyScript.phpのためにSVNを経てきたし、以前のすべてのバージョンは、シングルを使用していました。パスで。

答えて

7

現在のファイルのためのファイルシステムのパスを取得するにはdirname(__FILE__)を使用してください。次に、あなたのauditディレクトリを検索し、そこからの相対パスを使用します。

たとえば、scripts/MyScript.phpの範囲内では、dirname(__FILE__)/home/web/website.co.uk/scriptsを返します。あなたは確実にそれに/../auditを追加することができます。

(これもinclude Dまたはrequire Dのファイルでその場合、それはファイルが配置されている含まれているディレクトリが返され動作します)。

0

あなたのCWD(現在の作業ディレクトリ)が変更されました。これはドキュメントルートであり、ドキュメントルート/スクリプトです。

たとえば、URLの書き換えやその他の理由でhttp://website.co.uk/MyScript.phpより前に行った場合に、http://website.co.uk/scripts/MyScript.phpにアクセスしているなど、スクリプトにアクセスするために使用されたパスのために起こった可能性があります。

は、私は他の可能な犯人がある思い出すように見えるが、私は今、それらを思い出すことができません。いくつかの書き換えルールやURLを使ってマングルしましたか? (すなわち、PATH_INFOを使用して開始?)