2009-04-12 9 views
0

そうですね、私はWindowsシステムで作業していますが、これはローカルで動作しますが、他の人のサーバで動作することがわかります。これと同じようにクロスプラットフォームの方法を教えてくださいこの関数を書くにはどうすればよいでしょうか。それはリモートファイルを取得し、それをPHPでlocalyにコピーします

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

は、なぜそれが相手の人のサーバー上で解除されますか? fopenラッパーが有効になっている限り、上記が有効になります。 –

答えて

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)

したがって、あなたのフェッチの交換は($取得、$プット)のようになります。

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 +にあります) –

0

ショーンの答えは、唯一のことは、あなたが必ずあなたの$プットを作成する必要があることです正しい絶対的ですvarialableは、Unixサーバー上のWindows Server上のいずれかの有効なパスです。私は私はあなたがローカルサーバーにリモートサーバーからファイルを持参したかった理解あなたの質問を読んだとき、これがない場合にも、これは

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

をPHPからFTP拡張子で行うことができます

0

あなたが意図私は何ショーンが言うことは正しいと信じている他の

はコメントで教えてください、私はあなたより多くの

0

のfopenラッパーが有効でない場合、カール延長は可能性がお手伝いします:をここ

関連する問題