2010-05-25 30 views
2

我有一個包含許多文件和目錄的站點。這些目錄有幾個層次。問題是他們在錯誤的目錄中。他們在/www/upload/site/和一切應該被移動到/www/。是否有一個簡短的腳本來移動所有兩個目錄?如何用PHP批量移動文件和目錄

謝謝。

+4

它*有*是PHP腳本嗎?你的FTP客戶端應該能夠做到這一點,或者你可以用一個shell來做到這一點。 – 2010-05-25 20:50:36

+0

問題是該網站在Godaddy上,對於某些網絡問題,我無法直接訪問控制面板,也無法使用FTP。我擁有的唯一訪問權限是通過VPN,它不允許我上傳文件。其實我有一個朋友的幫助下,在那裏的文件,但他們結束了錯誤的目錄。我可以使用控制面板的「新文件」並製作一個小腳本來運行VPN。 – 2010-05-25 21:07:14

+0

我只是提到GoDaddy的名字而嘔吐。 – 2010-05-25 21:44:38

回答

1

正如其他回答者所指出的那樣,PHP並不是最優雅的解決方案,只需下載一個FTP程序來移動文件就簡單多了。但是,如果你想實現這個使用PHP,你可以寫這樣的:

$dir=opendir('/www/upload/site/'); 

while ($file = readdir($dir)) { 
    if ($file == '.' || $file == '..') continue; // skip references to self 

    rename('/www/upload/site/'.$file, '/www/'.$file); 
} 

closedir($dir); 

這個過程是低效的,並帶來了爲更容易的方法,如使用Rename FunctionCopy Function不會工作你的情況。重命名會要求你重命名的目錄是空的,而不是從內部移動它,複製不能複製完整的目錄。因此,我們只剩下流程或循環遍歷每個文件,並使用PHP的每個單獨項目的重命名函數手動將它移動到新位置。

所以,雖然這個過程當然不是PHP所必需的,但完全有可能做到這一點,知道怎麼做總是有用的。有關使用文件/目錄的更多信息,請參閱PHP's File System Functions

+0

它工作完美。謝謝! – 2010-05-25 21:57:17

0

你不需要腳本。獲取一個好的ftp程序,例如FileZillaFireFTP(需要firefox),並且你可以簡單地選擇所有文件夾,並將www/upload/中的所有文件夾和文件拖動到www/upload,並且ftp程序會爲你移動它們。

+0

正如我在上面的評論中所解釋的,FTP選項不可用。 – 2010-05-25 21:07:59

0

我不知道服務器是如何設置的,但可能這不會工作,因爲運行php腳本的用戶不太可能有權移動您上傳的文件(除非使用php腳本上傳文件以及...)。

你當然可以嘗試這樣的:

<?php 
    exec('mv /www/upload/site/* /www'); 
?> 

,但我會很小心這一點。

+0

謝謝,但我不認爲這將在分片託管上起作用。 – 2010-05-25 21:56:32

+0

有很多共享託管解決方案,您可以訪問shell,但我不知道godaddy。你試過了嗎? – jeroen 2010-05-25 22:33:02

+0

匿名用戶試圖在編輯中做出以下評論:*爲我工作,但重命名在路徑中任何位置具有空格的目錄*。 – Sam 2014-01-19 04:24:04