Page 1 sur 1

utilisation des commandes programme externe

Posté : 26 juin 2008, 12:18
par liseg31
est-il possible d'utiliser les cmd type shell_exec (ou apparentées) pour executer une instruction PlSql (sur une machine linux) ?
comme suit (avec passage de paramètres pour corser un peu la chose)

$strSh='sqlplus dippar@//<mon adresse serveur>/<mabase> @/home/<monrep>/marequete.sql'.' '.$p1.' '.$p2.' '.$p3.' '.$p4;

shell_exec($strSh);


je demance peut-être la lune ?

:)

Posté : 26 juin 2008, 12:29
par Sékiltoyai
Pourquoi ne serait-ce pas possible ?
Si tu peux exécuter la commande dans un shell, tu peux l'exécuter par shell_exec() & cie...

suite

Posté : 26 juin 2008, 19:37
par liseg31
en fait je réussis en interface de commande à lancer un shell contenant la requête écrite en plsql à la condiition sous l'invite de commande (linux) de faire précéder le nom de mon shell par lles caractères ./

ce qui donne:

$ ./monshell.sh

dans ce cas, ca marche mais lorsque je transpose tout cela en php celà ne fonctionne pas.

Je soupçonne en fait un pb d'environnement linux (quel shell j'invoque dans un cas et dans l'autre ?)
ou bien un pb de variables d'environnement.
Comme je ne maitrise pas vraiment (c'est un euphémisme) linux et toutes les subtilités qu'il comporte, je pense qu'un peu d'aide ne peut me nuire
bien au contraire.

Posté : 26 juin 2008, 21:42
par Sékiltoyai
Indique le chemin absolu du shell (pourquoi changer de shell, le shell par défaut ne réussit pas à exécuter ta commande ? )

Re: utilisation des commandes programme externe

Posté : 14 mai 2013, 18:13
par cgstag
Revive.

Bonjour, ce post date de 2008 mais j'ai un problème très semblable.

Je rencontre le même problème, je récapitule :

J'ai un script unix

Code : Tout sélectionner

#!/bin/bash echo "This script is working" sqlplus username/password//ip_address_distant_server:port/database @/var/www/mydirectory/myquery.sql parameter1 parameter2 parameter3
Que j'appel depuis une page php grace à shell_exec();

Code : Tout sélectionner

shell_exec('sh var/www/mydirectory/myscript.sh');
Le navigateur affiche bien "This script is working", mais le script myquery.sql ne marche pas (il contient des spools, et est donc sensé m'envoyer des fichiers sur mon serveur).

A noter que quand je lance le script via la ligne de commande (depuis PuTTy, via un utilisateur normal) : tout marche normalement.
Lorsque je lance un bete script via shell_exec (sans sqlplus donc), cela fonctionne également.

Je suspecte un probleme de permissions entre l'utilisateur que prend Apache pour exécuter le script, et la commande unix sqlplus....si quelqu'un a déjà rencontré ce problème, toute aide est fortement accepté !

Merci d'avance.

Re: utilisation des commandes programme externe

Posté : 14 mai 2013, 19:58
par ghost5922
Bonjour,

ouvre un nouveau sujet serait mieux je pense
sinon avec un / en début ?

shell_exec('sh /var/www/mydirectory/myscript.sh');

vérifier que ton fichier php a les bon droits