gpt4 book ai didi

php - 使用 PHP 重命名文件

转载 作者:行者123 更新时间:2023-12-04 05:49:31 25 4
gpt4 key购买 nike

我正在使用我在此处找到的代码,该代码运行良好,但是当我尝试访问子目录中的文件时,它只是不想工作。

它获取一个文件,创建一个要写入的临时文件,然后在文件中查找一些文本并用新文本替换该文本,然后保存更新的文件,然后删除临时文件。

以下工作正常:

        $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是绝对的,我之前在代码中定义了它并使用它来创建文件和写入文件,但是当我希望上面的代码以相同的方式工作时,它只是不想。

此外,文件夹权限已设置为写入和读取,这也可以正常工作。

运行子文件夹中的代码并且工作正常,但不是来自顶级目录。

错误报告已关闭,现在将其打开:

The process cannot access the file because it is being used by another process. (code: 32)

最佳答案

因此,经过一周的环顾、测试、破坏和重新编码后,我找到了一种简单的方法来做到这一点。

由于大部分内容以及 links.htm 文件都是动态创建的,因此很难找到访问文件的位置和时间,因为代码访问了我的大约 300 个客户站点并更新了链接文件。

简单修复:

$path = "path/on/server/";

$conn_id = ftp_connect("ftp.testftp.com") or die("Could not connect");
ftp_login($conn_id,"admin","ert456");

$old_file = $path.'links.htm';
$new_file = $path.'_template.htm';
ftp_rename($conn_id, $old_file, $new_file);

$source = fopen($new_file, "w");
$localTarget = "path/to/links.htm";

ftp_fget($conn,$source,$localTarget,FTP_ASCII);

$reading = fopen('path/to/links.htm', 'r');
$writing = fopen('path/to/_template.htm', '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/_template.htm', 'path/to/links.htm');
} else {
unlink('path/to/_template.htm');
}

$local_file = "path/to/links.htm";

ftp_put($conn_id, $path, $local_file, FTP_BINARY);

ftp_close($conn_id);

可能有更简单的方法可以做到这一点,但这对我有用,希望对某人有所帮助。

关于php - 使用 PHP 重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com