0

単純な出力バッファリング キャッシュ エンジンを作成しています。

これが私を困らせるコードの抜粋です:

//...

function cache_page($content) {
    $handle = fopen('./folder/cache_file','w');
    //...
}

//...

ob_start('cache_page');

奇妙なことに、「./folder/cache_file」のような相対パスを使用すると、fopen が失敗して false が返されます。「C:/foilder/cache_file」のようなフル パスまたはファイル名「cache_file」のみを使用すると、すべてうまく機能します。

この問題は、ob_startハンドラー関数呼び出し (この場合は cache_page) に関連しているようです。もちろん、$handle = fopen('./folder/cache_file','w')たとえば、の直後など、別の場所に置くと、上記の相対パスob_startfopen成功します。

4

2 に答える 2

1

「アプリケーションパス」に依存します。スクリプトが実行されるフォルダの値はROOT_PATH?

試しましたfopen('folder/cache_file','w');か?

于 2012-11-11T14:01:17.467 に答える
0

それで、あなたが使うとき、それは働きますC:/folder/cache_filecache_file?つまり、でスクリプトを実行しているということですC:/folder/./folder/cache_file中にあるときに相対パスを使用するC:/folder/ということは、フルパスがであることを意味しますC:/folder/folder/cache_file

相対とは、現在の作業ディレクトリを基準にしたものを意味します。

于 2012-11-11T14:03:13.297 に答える