私はここで見つけたコードを使用していますが、これはうまく機能しますが、サブディレクトリ内のファイルにアクセスしようとすると、機能したくありません。
ファイルを取得し、書き込む一時ファイルを作成し、ファイル内のテキストを検索してそのテキストを新しいテキストに置き換え、更新されたファイルを保存してから、一時ファイルを削除します。
以下は正常に機能します。
$reading = fopen('links.htm', 'r');
$writing = fopen('links.tmp', 'w+');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line,'::template::')) {
$line = "replacement line!\n";
$replaced = true;
}
fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('links.tmp', 'links.htm');
} else {
unlink('links.tmp');
}
これは機能しません:
$reading = fopen('path/to/links.htm', 'r');
$writing = fopen('path/to/links.tmp', 'w+');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line,'::template::')) {
$line = "replacement line!\n";
$replaced = true;
}
fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('path/to/links.tmp', 'path/to/links.htm');
} else {
unlink('path/to/links.tmp');
}
助言がありますか?
これpath
は絶対的なものです。以前にコードで定義し、ファイルの作成と書き込みに使用しましたが、上記のコードを同じように機能させたい場合は、必要ありません。
また、フォルダのアクセス許可は書き込みと読み取りに設定されており、これも正常に機能します。
サブフォルダ内のコードを実行し、正常に動作しますが、トップレベルディレクトリからは動作しません。
エラー報告がオフになっています。今すぐオンにします。
別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。(コード:32)