utilisation des commandes programme externe

Petit nouveau ! | 2 Messages

26 juin 2008, 12:18

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 ?

:)

ViPHP
ViPHP | 5924 Messages

26 juin 2008, 12:29

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...

Petit nouveau ! | 2 Messages

26 juin 2008, 19:37

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.

ViPHP
ViPHP | 5924 Messages

26 juin 2008, 21:42

Indique le chemin absolu du shell (pourquoi changer de shell, le shell par défaut ne réussit pas à exécuter ta commande ? )

Petit nouveau ! | 5 Messages

14 mai 2013, 18:13

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.

Mammouth du PHP | 619 Messages

14 mai 2013, 19:58

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