2009-04-12 7 views
0

Donc oui, je travaille sur un système Windows et alors que cela fonctionne localement, sachez qu'il va se briser sur les serveurs des autres peuples. Ce qui est une manière multi-plateforme pour faire la même chose que ceQuel est le meilleur moyen d'écrire cette fonction. Son obtient un fichier distant et copys localy, en php

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

Pourquoi il briser sur d'autres serveurs de personnes? tant que les wrappers fopen sont activés, cela fonctionnera. –

Répondre

1

serait ici la solution en utilisant les opérations de fichiers simples:

<?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); 
?> 

Assurez-vous que le répertoire dispose des autorisations d'écriture activées. (Chmod)

Par conséquent, un remplacement pour votre fetch ($ obtenir, mettre de $) serait:

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); 
} 

espère que cela a aidé! =)


Cheers, KRX

3

Je ne vois pas pourquoi cela échouera à moins que l'autre ordinateur est sur PHP4. Qu'est-ce que vous devez faire pour que arrière compatible est d'ajouter des fonctionnalités pour fournir les relèves 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

s'il s'agit d'un problème v4 vs v5, http://pear.php.net/package/PHP_Compat a file_put_contents() (file_get_contents est en v4.3 +) –

0

La réponse de Shawn est absolue correcte, la seule chose est que vous devez vous assurer que votre vente de $ varialable est un chemin valide sur Windows Server sur le serveur Unix.

0

bien quand je lis votre question, je compris que vous vouliez apporter un fichier à partir d'un serveur distant à votre serveur local, ce qui peut être fait avec l'extension FTP de php

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

si ce n'est pas ce que vous avez l'intention, je crois ce que dit shawn est correct

autre me dire dans les commentaires et je vais vous aider plus

Questions connexes