我開發了一個PHP5下載的遞歸FTP腳本,允許您使用AJAX請求選擇要下載的文件和/或目錄。服務器接收到的POST變量只是一個簡短的管道分隔字符串,根本不佔用任何內存。在遠程虛擬服務器上FTP下載失敗,但在本地設置上完美工作
腳本本身在我的本地Apache安裝程序中完美工作,並進入每個目錄並下載每個文件和文件夾。
在我設置在Media Temple下的遠程虛擬服務器上,腳本在大型結構上失敗,這由我的本地Apache處理得很好。
症狀是有些目錄被認爲是文件,因此腳本不會進入並進一步下載。
該腳本通過嘗試遠程打開它來檢查路徑是否爲目錄。如果它可以打開目錄,它會遞歸地下載它中的所有內容,直到它完成。
在Media Temple上託管的php.ini比我的本地設置(更長的最大執行時間,更高的內存限制等)有更高的閾值,所以這不是問題...我甚至嘗試過在遠程服務器上使用我的本地php.ini。
拖尾錯誤日誌用於獲取我的「腳本標頭,PHP的提前結束」,直到我從常規託管切換到專用虛擬服務器。現在它根本沒有反應。
我試圖解決的問題是在php.ini中試驗不同的值,最近我爲每個新創建的文件和目錄做了flush()和ob_flush()...嘗試阻止任何「腳本標題,PHP過早結束」的發生。
你有什麼想法嗎?
只是一個建議......有禮貌的問題不是以'嘿!'開頭的 - 除此之外,通過嘗試打開它來檢查對象是文件還是文件夾是否明智? – pavium 2009-09-29 07:43:46
對不起,「嘿!」不,它感覺不太好。但是,沒有其他方法(據我所知)來檢查它是否是dir ...沒有用於FTP的is_dir()函數。我之前做的是檢查文件名最後一段中的點。但是一個目錄可以包含點,所以這是一個壞主意。這是緩慢的,但給出了正確的結果。 – Christoffer 2009-09-29 08:50:01