2011-10-19 61 views
0

我有一個通過ftp函數登錄到我的服務器的php腳本,並輕鬆快速地備份整個事情,但我似乎無法找到一種方法讓腳本確定主索引文件所在的文件夾。使用php的ftp函數查找公共html文件夾

例如,我有6個服務器與一堆ftp帳戶設置不同。一些登錄到具有httpdocs/httpsdocs/public_html/error_docs/sub_domains和這樣的文件夾的FTP根目錄,並且一些登錄到索引文件所在的httpdocs。我只想備份主要的工作網絡文件,而不是所有其他可能存在的東西

我已經設置了一種方法來定義工作目錄,但這意味着我必須爲每個服務器使用不同的腳本或我想要做的備份。

是否有可能讓php腳本找到或解決主要的Web目錄? 一種選擇是設置一個數據庫,該數據庫可以使用該目錄,或者如果ftp直接登錄到該目錄,那麼該數據庫沒有任何用處,但是我要在此處進行自動化。

如果這是不可能的,我會去數據庫選項。

回答

0

不,你無法可靠地做到這一點,不知道如何爲每個域設置Apache。你最好用數據庫/配置文件路線。一次性安裝成本加上一點點的維護,因爲網站被添加/修改/刪除。

您可能會花費數天時間才能完成探測器腳本,並且在下次出現未知配置時會失敗。試圖創建一個AI非常困難......你必須首先將其設置爲人工愚蠢級別(例如MS Paperclip)。

+0

嘿,[大眼夾](http://en.wikipedia.org/wiki/Clippy)很酷。不是真的。 –

2

你不能通過FTP單獨弄清楚在apache中配置的根目錄是什麼 - 除非你獲取httpd.conf並解析它,我相當確信你不想這樣做。據推測,你正在循環使用相同的腳本從多個服務器做這個備份?

如果是這樣,只需定義一個數組中的所有內容,並使用foreach進行循環,並在每次迭代中提供所有相關數據。

所以我會做這樣的事情:

// This will hold all our configuration 
$serverData = array(); 

// First server 
$serverData['server1']['ftp_address'] = 'ftp://11.22.33.44/'; 
$serverData['server1']['ftp_username'] = 'admin'; 
$serverData['server1']['ftp_password'] = 'password'; 
$serverData['server1']['root_dir'] = 'myuser/public_html'; 

// Second server 
$serverData['server2']['ftp_address'] = 'ftp://11.22.22.11/'; 
$serverData['server2']['ftp_username'] = 'root'; 
$serverData['server2']['ftp_password'] = 'hackmeplease'; 
$serverData['server2']['root_dir'] = 'myuser/public_html'; 

// ...and so on 
// Of course, you could also query a database to populate the $serverData array 

foreach ($serverData as $server) { 

    // Process each server - all the data is available in $server['ftp_address'], $server['root_dir'] etc etc 

}