Bonjour.

Je vous explique le souci, je souhaite exécuter un pg_restore sous Windows via la commande exec() de PHP.

Je sais qu'il s'agit d'un problème de droit, je ne sais pas si c'est Windows ou PostGres qui pose problème (via le pg_hba.conf ?).

En effet, si j'exécute la commande directement via l'invite de commande cela fonctionne, mais pas par un appel en PHP (pareil si je passe par un intermédiaire en .bat).

Des idées ?

PS : j'avais réussi à régler le problème pour un pg_dump.exe en passant à TRUST dans le pg_hba.conf, mais cela ne change rien ici.

Je n'ai aucun message d'erreur, juste le processus pg_restore.exe dans le gestionnaire des tâches qui tourne au minimum et jusqu'au max_execution_time de PHP.
Alors qu'en l'exécutant dans directement dans l'invite de commande ou bien par un .bat il utilise des ressources et s'exécute en quelques secondes.

C'est donc une question de droits, mais je ne sais pas où regarder.

Sinon je suis sur un Apache 2.2 et un PHP 5.3.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$cmd="\"C:\\Program Files\\pgAdmin III\\1.16\\pg_restore.exe\" --create -d postgres --format=c --no-owner --ignore-version --verbose --host=localhost --port=5432 -U ****** ******.backup";
 
exec($cmd);
Cdt.