簡體   English   中英

php從一個dir重命名(移動)到另一個兩個級別

[英]php rename (move) from one dir to another that is two levels back

我的腳本文件路徑是:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\可濕性粉劑內容\\插件\\測試\\ test.php的

我需要從這條路徑運行代碼,從路徑移動圖像:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\的wp-content \\上傳\\ 2017年\\ 04

至:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\的wp-content \\上傳\\圖片

我的問題是,我不知道如何強制“重命名”回到路徑中的兩個目錄。

我在嘗試這樣的事情:

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');

錯誤我正在獲取atm(我已經更改了我的文件夾權限,所以也許它是路徑的東西?):

Warning: rename(C:\xampp\htdocs\wordpress\wp-content\uploads\2017\04\obrazek.png,C:\xampp\htdocs\wordpress\wp-content\uploads\images): access denied
. (code: 5) in C:\xampp\htdocs\wordpress\wp-content\plugins\uploadsdir-manager\test.php on line 16

編輯重命名代碼:

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');
$destPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/images');
/*$srcDir = opendir($srcPath);*/
echo $srcPath ;

sleep(1); 
rename($srcPath, $destPath);

看來你是在Windows機器上,所以你使用了錯誤的斜杠: /../..' . '/uploads/2017/04/obrazek.png' /../..' . '/uploads/2017/04/obrazek.png'

你可以嘗試用反斜杠替換它們: \\..\\..\\uploads\\2017\\04\\obrazek.png'

或者您可以嘗試這樣的事情:

$path = substr($srcPath, 0, strrpos($srcPath, '\20'));

// $path now contaits: 'C:\xampp\htdocs\wordpress\wp-content\uploads';

// Then you can do:

$srcPath = $path . '\images';

關於警告錯誤:

Warning: rename(C:\xampp\htdocs\wordpress\wp-content\uploads\2017\04\obrazek.png,C:\xampp\htdocs\wordpress\wp-content\uploads\images): access denied. (code: 5) in C:\xampp\htdocs\wordpress\wp-content\plugins\uploadsdir-manager\test.php on line 16

您似乎嘗試將文件重命名為目錄,因此可能忘記將文件名附加到新路徑。

$srcPath包含一個文件。 $destPath包含一個目錄,但它應該包含文件名。

從它看,它看起來是錯誤的

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');

它應該是

$srcPath = realpath(dirname(__FILE__) . '../..' . '/uploads/2017/04/obrazek.png');

你在開頭有一個額外的/斜杠。

我終於花了好幾個小時..找出如何修復它,所以你去了:

$srcPath =  (realpath (dirname(__FILE__) . '\..\..' . '\uploads\2017\04') . '\obrazek2.png');
$destPath = (realpath (dirname(__FILE__) . '\..\..' . '\uploads\images') . '\obrazek2.png');

rename ($srcPath , $destPath );

關鍵是添加文件名. '\\obrazek2.png' . '\\obrazek2.png'在dirname()之后,因為如果filename在dirname()內,並且它是重命名的目標路徑,那么它返回空... :)

不確定我是否足夠清楚,因為我的英語,但它有效,並希望它能幫助某人。

暫無
暫無

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

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