IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

pb pour execution d'un shell


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut pb pour execution d'un shell
    un petit peu d'aide ne serait pas de refus

    pour aller à l'essentiel.

    avec un serveur linux (version fedora 4), dans un shell j'éxécute un script php qui a pour fonction d'assurer un transfert de données.

    Lorsque j'éxécute cette ligne de commande en mode terminal (dans le même repertoire où se trouve mon shell) pas de souci, la tache s'éxecute correctement.
    Lorsque j'execute le shell, par contre la partie ou se trouve ma ligne de commande en php ne s'execute pas et j'ai un message d'erreur du genre (de mémoire) "can't open file.
    j'en suis fort contrarié.

    Est-ce que celà viendrait de mon environnement sous linux ?
    Qu'est ce qui peut être la cause de pareil farce ?

    merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Bonjour,

    Peux-tu poster un bout de ton script dont la partie qui pose problème ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut le bout du script
    tout simple

    la ligne en question

    php /home/itd/dataSido.php

    y a t-l un piège possible côté environnement dans l'execution du php ?

    .....

  4. #4
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Je pense que l'appel de php n'est pas dans le path.
    Essaie d'appeler php avec le chemin absolu.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut ouaips, je n'y avais pas pensé.
    je teste demain.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut marche pas
    malgré différentes tentatives, celà ne marche pas.

    j'ai ce message (toujours le même) suivant qui apparait
    Could not open input file: [le nom de mon fichier]

    j'essaye d'autre solutions, toujours en ligne de commande, mais rien de bien probant.


  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    si ton script php contient #!/usr/bin/php sur sa premiere ligne, tu n as pas besoin de mettre php lors de l'appel

    un simple /home/itd/dataSido.php suffit, comme tu le ferais avec un script shell, perl ...

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut ca craint
    j'ai testé avec ou sans l'introduction de la ligne proposée dans le script php et celà ne marche pas plus.

    une simple question: disposant d'une distribution fedora core 4 installé avec les paquets rpm, je commence à soupconner l'absence du paquet rpm php-cli
    est-ce que vous semblerait expliquer cette incohérence de comportement ?
    qui je le rappelle est la suivante:
    - en port console, l'execution du script php fonctionne.
    - en shell, rien a faire (pour le moment)

    ne desespérant pas de trouver (je cherche par mes propres moyens)


  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    il te mettrait "Command not found"

    quand tu parles de shell, tu parles de script shell ?

    t as un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
     
    php /home/itd/dataSido.php

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Salut,
    Quelle difference fais-tu entre mode terminal et mode shell?

    Sous quel utilisateur tu lances ton script? Pourrais-tu le poster?

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par tonton fred Voir le message
    Salut,
    Quelle difference fais-tu entre mode terminal et mode shell?

    Sous quel utilisateur tu lances ton script? Pourrais-tu le poster?
    à priori c'est le même utilisateur
    que veux tu comme précisions à ce sujet ?

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut une alternative possible ???
    dans le but de trouver une alternative à mon script qui ne tourne pas rond, j'ai tenté de passer les instructions php directement dans le shell avec la commande
    php -r 'mon code php'
    mais je rencontre quelques difficultés avec notamment l'usage des simples quotes genre ' dans la commande insert par exemple.
    Peut-on les "echapper" ? et comment ?


    voici les quelques lignes de code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    php -r '$dbhote="@ipmachine1";
    $dbuser="monlogin";
    $dbpass="monpass";
    $dbase="mabase";
    $link= mysql_connect ($dbhote, $dbuser, $dbpass);
    mysql_select_db($dbase, $link);
    $sql0="select distinct ds from `tdsj`";
    $rs0= mysql_query($sql0,$link);
    $nl = mysql_num_rows($rs0);
    Putenv("NLS_LANG=AMERICAN_AMERICA.US7ASCII");
    $db="(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = @ipmachine2)(PORT = 1524
    )) ) (CONNECT_DATA = (SID = P42BUTI) ) )";
    $cnx = ocilogon("dippar","dippar",$db);
    $sqlSido= "SELECT count(dslam) as nb FROM itdslam";
    $tab=array();
    	while ($row=mysql_fetch_array($rs0))
      {
    	array_push($tab, $row['ds']);		
      }  
    foreach($tab as $val) 
    		{
    $sqlSido1= "INSERT INTO itdslam (dslam) values ('$val]'";
    $stmt1 = ociparse($cnx, $sqlSido1);
    oci_execute($stmt1, OCI_COMMIT_ON_SUCCESS);				
    		}
    oci_free_statement($stmt1);'
    bon je voudrais pas abuser de votre bonne volonté tout de même.


  13. #13
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Ashin Voir le message
    il te mettrait "Command not found"

    quand tu parles de shell, tu parles de script shell ?

    t as un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
     
    php /home/itd/dataSido.php
    je crois que je vais faire un test avec tes remarques.
    je pense ne pas avoir correctement construit mon shell avec la ligne en début de fichier.
    encore que le compte que j'utilise appelle bien ce shell normalement
    par ailleurs, comment le shell se débrouille-t-il pour trouver le cli du PHP ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    soit c'est ton fichier php qui le précise avec la premiere ligne :
    #!/usr/bin/php
    et dans ce cas tu ne mets pas php lors de l'appel

    soit php est dans ton $PATH et donc il le trouve

    soit tu mets le chemin complet

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut pour avancer
    voici résumées les réponses que j'obtiens de ma machine.
    je pense vraiment être "victime" de l'environnement dont je dispose... comme je ne suis pas un expert en linux et que ma formation comporte quelques lacunes...
    merci de me donner quelques pistes.



    exécution par la crontab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    From itd@toni  Wed May 27 10:59:02 2009
    Date: Wed, 27 May 2009 10:59:02 +0200
    From: root@toni (Cron Daemon)
    To: itd@toni
    Subject: Cron <itd@toni> /home/itd/mednew.sh
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/home/itd>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=itd>
    X-Cron-Env: <USER=itd>
     
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/
    oci8.so' - libclntsh.so.10.1: cannot open shared object file: No such file or di
    rectory in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/
    oci8.so' - libclntsh.so.10.1: cannot open shared object file: No such file or di
    rectory in Unknown on line 0
    PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/
    pdo_oci.so' - libclntsh.so.10.1: cannot open shared object file: No such file or
     directory in Unknown on line 0
    PHP Fatal error:  Call to undefined function ocilogon() in /home/itd/dataSido.ph
    p on line 14
     
    Fatal error: Call to undefined function ocilogon() in /home/itd/dataSido.php on
    line 14
    execution "manuelle" depuis le port console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    : Aucun fichier ou répertoire de ce type
    PHP Warning:  Module 'oci8' already loaded in Unknown on line 0
    PHP Warning:  Module 'PDO' already loaded in Unknown on line 0

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    http://www.themanualpage.org/unix/cron.php

    tu es dans un environnement unix, donc définit correctement ton LD_LIBRARY_PATH dans ton cron ou dans ton shell

    setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:le_lien_vers_ta librairie

    ou dans ton cron avec le lien que je t ai passé

  17. #17
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut peut-être sorti d'affaires
    j'ai inséré les variables nécessaires (libray, path) dans la crontab de l'user concerné.
    Cela fonctionne désormais semble-t-il; je surveille le schmilblic chaque jour ...

    merci encore



    moralité: quelques progrès à faire pour bien maitriser linux...

  18. #18
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 9
    Points
    9
    Par défaut ca roule !!!
    après moultes essais et pérégrinations, c'est résolu

    - il m'a fallu embarquer dans la crontab les variables nécessaires (path et library oracle notamment)
    - veiller à ce que ne traîne pas de caractère "à-la-noix" dans l'écriture de ma crontab.

    et depuis, après vérifications quotidiennes, cela fonctionne

    merci à ceux qui on su m'éclairer et me mettre sur la bonne piste.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. commande shell pour executer une requête sql
    Par young077 dans le forum Administration système
    Réponses: 4
    Dernier message: 10/07/2009, 02h19
  2. script shell pour execution tache de fond mysql
    Par boubourse92 dans le forum Linux
    Réponses: 2
    Dernier message: 09/04/2008, 17h54
  3. [C] code pour executer une commande shell
    Par waldoun dans le forum Linux
    Réponses: 3
    Dernier message: 05/05/2007, 22h41
  4. obligé d'être root pour executer !
    Par JAimeBienCoderBourre dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/05/2005, 21h02
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo