2009-04-12 56 views
0

因此,即時通訊工作在Windows系統,雖然這在本地工作,知道它會打破其他人民服務器。請告訴我一個跨平臺的方式做同樣的,因爲這最好的方法來寫這個函數。它得到一個遠程文件,並複製它本地,在php

function fetch($get,$put){ 
    file_put_contents($put,file_get_contents($get)); 
} 
+0

爲什麼將它放在其他的人打破的服務器?只要Fopen包裝啓用,上面就會起作用。 – 2009-04-12 06:36:16

回答

1

這裏會使用簡單的文件操作的解決方案:

<?php 
$file = "http://www.domain.com/thisisthefileiwant.zip"; 
$hostfile = fopen($file, 'r'); 
$fh = fopen("thisisthenameofthefileiwantafterdownloading.zip", 'w'); 

while (!feof($hostfile)) { 
    $output = fread($hostfile, 8192); 
    fwrite($fh, $output); 
} 

fclose($hostfile); 
fclose($fh); 
?> 

確保您的目錄啓用寫入權限。 (CHMOD)

因此,對於您的更換取($得到,$ PUT)將是:

function fetch($get, $put) {  
    $hostfile = fopen($get, 'r'); 
    $fh = fopen($put, 'w'); 

    while (!feof($hostfile)) { 
     $output = fread($hostfile, 8192); 
     fwrite($fh, $output); 
    } 

    fclose($hostfile); 
    fclose($fh); 
} 

希望它幫助! =)


乾杯, KRX

3

我不明白爲什麼,除非其他計算機上PHP4會失敗。你需要做的,使該向後兼容的功能添加到提供的file_get_contents更換什麼& file_put_contents:

if(version_compare(phpversion(),'5','<')) { 
    function file_get_contents($file) { 
     // mimick functionality here 
    }  
    function file_put_contents($file,$data) { 
     // mimick functionality here 
    } 
} 
+0

如果是v4 vs v5問題,http://pear.php.net/package/PHP_Compat有file_put_contents()(file_get_contents在v4.3 +中) – 2009-04-12 08:38:26

0

肖恩的答案是絕對正確的,唯一的事情是,你需要確保你的$放在Unix服務器上的Windows Server上,可變的是有效的路徑。

0

很好,當我讀了你的問題我理解你希望把從遠程服務器的文件保存到本地服務器,這可以用FTP擴展從PHP

http://www.php.net/manual/en/function.ftp-fget.php

來完成,如果這不是你的意圖,我相信什麼什麼肖恩說的是正確的

別人告訴我的意見,我會幫你更

相關問題