eldana wrote:Le exec ne marche pas vu que cela se passe sous firefox, donc je ne télécharge rien.
Lorque l'on utilise firefox, firefox est c'est un client qui dialogue avec le serveur web (apache?). Et c'est le serveur web qui exécute le code php que tu as installé dans la racine du serveur.
C'est
apache qui exécute le 'exec' et non
pas firefox.
Ensuite :
En php : exec
IS NOT system
exec exécute une commande et retourne une chaine de caractères égale à celle qu'aurait affiché la commande en SHELL
system exécute une commande et c'est tout.
Dans les deux cas la commande est exécutée mais c'est le résultat qui n'est pas le même.
essaie
exec($cmd)
ou
$dernière_ligne=system($cmd, $code_retour)
La dernière ligne devrait contenir la dernière ligne du wget (la plus intéressante)
Mais n'oublie pas de tester le code retour.
En effet apache démarre avec un PATH qui ne lui permet peut-re pas de trouver 'wget'.
En ce moment je pense que
ton problème se situe là, mais vérifie les autres points.
Il vaut mieux donc l'aider en précisant le chemin complet.
$cmd = "/usr/bin/wget -O /root/fichier.pdf ".$url;
Mais
ATTENTION aussi, pourquoi écrire le fichier dans
'/root', tu penses qu'apache a le droit d'écrire dans '/root'. J'espère qu'apache ne tourne pas sous root chez toi.
Il vaut mieux préparer les téléchargement dans un répertoire tmp situé dans la racine du serveur web que d'utiliser /root.
On peut aussi se servir des fonctions de génération de noms de fichiers temporaires de php.
Pour avoir une trace du wget :
$cmd = "/usr/bin/wget -O /root/fichier.pdf ".$url . ">fic_trace 2>&1" ;
Dans ce cas du côté serveur tu pourras récupérer la trace du wget.
Personnellement quand le code de retour est bon, je n'utilise pas le fichier trace, mais dans le cas contraire je l'ouvre en php et j'affiche son contenu sur la page utilisateur (à supprimer impérativement pour la mise en production).
Il peut y avoir aussi un problème qui bloque , l'exécution d'une commande (exec ou system) c'est le paramètre safe_mode de ton serveur web/php.
Il faut donc vérifier safe_mode.