Fonction copy()

Répondre
BigZ[SHN]
le 20/12/2010 à 08:53
BigZ[SHN]
Bonjour,

J'ai crée un script qui fonctionne très bien en local.

Son but, télécharger des documents PDF sur un site externe (pas a moi) et les rapatrier sur mon serveur.

Donc en local il marche très bien, mais dès que je le met online, ça ne fonctionne plus.

Voilà le script :
<?php 
$file = 'http://www.autresite.com/file.pdf';
$newfile = 'mon_dir/file.pdf';

if (!copy($file, $newfile)) {
echo "La copie du fichier $file n'a pas réussi...\n";
}
?>


Quelqu'un a une idée ?

Merci

P.S. La fonction copy() fonctionne sur mon serveur, j'ai testé une copie locale. Et mon_dir est bien chmodé en 777
LA GLOBULE
le 20/12/2010 à 11:12
LA GLOBULE
Surement que le PHP de ton serveur à la valeur allow_url_fopen à false dans son php.ini.

Pour télécharger un fichier, le mieux reste d'utiliser curl.
BigZ[SHN]
le 20/12/2010 à 11:44
BigZ[SHN]
Damn !

curl est une extension PHP non ? Comment puis-je l'intégrer sur un serveur loué ou je n'ai pas la main ?
LA GLOBULE
le 20/12/2010 à 12:21
LA GLOBULE
Regarde si tu ne l'as pas déjà via un phpinfo.

C'est une extension très souvent utilisée, justement lorsque l'on autorise pas l'allow_url_fopen (et c'est préférable d'utiliser curl).
BigZ[SHN]
le 20/12/2010 à 16:30
BigZ[SHN]
J'en profite pour poser une autre question.

Mon code ci-dessus fonctionne.

Le souci c'est que si le fichier "file.pdf" sur le serveur distant n'existe pas, il me crée quand même le file.pdf en local, mais vide.

Comment tester si le fichier est présent sur le serveur distant ?

Le file_exist ne fonctionne pas a distance... :S
LA GLOBULE
le 20/12/2010 à 18:11
LA GLOBULE
file_exists ne fonctionne pas à distance justement pour la même raison (allow_url_fopen à false).

Pour tester si le fichier existe avec curl, le plus simple est de récupérer les headers http et de vérifier qu'il ne s'agit pas d'une 404.
Tu peux les récupérer via un curl_setopt contenant CURLOPT_HEADER à true.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours