2011-08-17 59 views
3

我有一個腳本解壓縮服務器上的文件,但有可能在外部或遠程服務器上解壓縮文件。你可以在遠程服務器上解壓縮一個.zip文件嗎?

比如我可以去

<?php 
$zip = new ZipArchive; 
$zip->open('ftp://user:[email protected]/path/file.zip'); 
$zip->extractTo('ftp://user:[email protected]/'); 
$zip->close(); 
echo "Ok!"; ?> 

非常感謝

+0

將文件複製到你的服務器(編程),然後解壓縮。 –

+0

我希望能夠動態地構建一個腳本,將文件從一臺服務器傳輸到另一臺服務器並提取它。 – user827570

+1

是的,所以在你提取文件之前,先將一行代碼複製到服務器上。 'file_put_contents('file.zip',file_get_contents('ftp:// user:[email protected]/path/file.zip'));'then'$ zip-> open('file.zip');' –

回答

2

你可以嘗試通過SSH連接到該服務器的以下內容:

<?php 
$connection = ssh2_connect('example.com', 22); 
ssh2_auth_password($connection, 'username', 'password'); 
$stream = ssh2_exec($connection, 'unzip /path/to/file.zip'); 
?> 

此處瞭解詳情: http://www.php.net/manual/en/function.ssh2-exec.php

+0

嗨,謝謝你的迴應,但我有一個問題,運行上面的代碼,我收到「呼籲未定義函數ssh2_connect()第2行」 – user827570

+0

您需要編譯PHP支持SSH。 –

+0

我對PHP並不十分熟悉,但我建議閱讀http://www.php。net/manual/en/function.ssh2-exec.php並確保你的服務器上已經安裝了ssh並驗證了端口/用戶名/密碼 – sbrichards

2

使用PHP解壓縮服務器上的遠程文件爲我工作一個相當簡單的解決方案是:

  1. FTP zip文件,說a.zip,給您想要的位置提取

  2. 創建一個PHP文件unzip.php並FTP到同一個遠程文件夾夾如上

  3. zip文件插入以下代碼插入unzip.php

  1. 集chmod命令可執行

  2. 從任何瀏覽器中執行php文件 - 你SHD得到一個「確認」,確認提取