-1

次のコードがあります。

$cachefile = "http://www.DOMAIN.com/users/{$user}.php"; 
$fp = fopen($cachefile, 'w'); // open the cache file "cache/home.html" for writing 
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file 
fclose($fp); // close the file 
ob_end_clean(); // Send the output to the browser

chmod($cachefile, 0644);

次のエラーが発生するため、ファイル パスが無効です。Warning: chmod() [function.chmod]: No such file or directory in ...

ただし、このコードは次のことを行います。

$cachefile = "{$user}.php"; 
$fp = fopen($cachefile, 'w'); // open the cache file "cache/home.html" for writing 
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file 
fclose($fp); // close the file 
ob_end_clean(); // Send the output to the browser

chmod($cachefile, 0644);

ファイルは、2 番目のコード ブロックを使用して、それを作成したスクリプトと同じフォルダーに作成されます。ただし、最初のブロックの場所に保存したいと思います。私はphp.netを調べましたfopenが、何か間違ったことをしていることはわかりませんでしたが、明らかにそうです。

編集 (コメント応答):

私も$cachefile = $_SERVER["DOCUMENT_ROOT"] . "/users/{$user}.php"無駄に努力しました。

4

3 に答える 3

2

を使用してリモート ファイルに書き込むことはできませんfwrite()。独自のサーバーにあるファイルに書き込む場合は、相対パスを使用してください。

于 2012-05-14T02:46:11.033 に答える
1

Web アドレスではなく、サーバー上のファイルへのフル パスを使用する必要があります。

$cachefile = "/var/www/path/to/users/{$user}.php"; 
于 2012-05-14T02:45:58.863 に答える
0

リモート ファイルを開くことはできません。ローカル ファイル システム上のファイルのみを編集できます。ファイルがファイル システム上にある場合は、相対パスを使用する必要があります。

file_get_contents()また、fopen を使用する代わりに、 and を使用することもできますfile_put_contents()

于 2012-05-14T02:48:26.710 に答える