簡體   English   中英

PHP重命名不起作用

[英]PHP rename does not work

我使用選項CURLOPT_FILE下載帶有cURL的文件,然后嘗試將下載的文件重命名,例如,從“ 1.txt”重命名為“ 2.txt”。 無法重命名該文件。

PHP引發錯誤:

“警告:重命名(E:\\ ... / test / 1.txt,E:\\ ... / test / 2.txt)[function.rename]:E:\\ ... /中沒有這樣的文件或目錄第51行的test \\ lib \\ CURL \\ Download.php”

之后,我只運行一行腳本:

<?php rename("E:\.../test/1.txt","E:\.../test/2.txt");

並且重命名成功。

為什么現在可以使用? 相同的重命名操作。

其他事情:

  1. Windows操作系統

  2. 文件“ 1.txt”確實存在

  3. 重命名時我使用絕對路徑

  4. 重命名之前,我用fclose()關閉cURL使用的文件句柄

怎么了? 如何在第一個腳本中重命名下載的文件而不會出現錯誤?

我不認為PHP支持3點語法(...),這是Windows命令行特定的東西。

另外:您可能想嘗試對初始名稱使用realpath以確保它存在

編輯:

作為解決方案,只要做

<?php rename("E:\..\../test/1.txt","E:\..\../test/2.txt");

應該解決你的問題:)

您必須小心使用Windows樣式的字符串中的目錄分隔符( \\ )。 您正在使用雙引號引起來的字符串,因此任何單個反斜杠都將被解釋為轉義序列,而不是路徑分隔符。 使用正斜杠或單引號:

$src = "E:\\xampp\\htdocs\\test\\1.txt";
$src = 'E:\xampp\htdocs\test\1.txt';
$src = "E:/xampp/htdocs/test/1.txt";

都出現在同一件事上,但是如果您嘗試:

$src = "E:\xampp\htdocs\test\1.txt";

PHP將評估為:

$src = "E:xampphtdocstest1.txt";

由於OP表示此后使用相同的重命名行運行第二個腳本,所以我看不到其他任何當前答案有何意義。 我的猜測是您正在使用fopen創建文件資源,並運行curl_exec($ ch); 然后嘗試重命名文件而不調用fclose(); 由於該文件在離開腳本時會自動關閉,因此可以解釋為什么另一個具有相同代碼的腳本會起作用。

我有這個問題,我用下面的代碼解決了:

$oldname ='E:\.../test/1.txt';
$newname ='E:\.../test/2.txt';
rename($oldname,$newname);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM