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

Langage PHP Discussion :

Effectuer un exec() sur un éxecutable java


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut Effectuer un exec() sur un éxecutable java
    Hello

    Je vous explique le problème que je rencontre: j'ai installé mon site sur un serveur distant OVH et je suis entrain de tester.

    Mon application fait appel à un moment donné à la fonction exec() sur un exécutable java .jar.

    Ceci marche très bien en local mais pas sur mon serveur. J'essaye de comprendre pourquoi et j'essaye déjà de tester avec un simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    exec("echo toto:titi", $res);
    $content = "";
    foreach($res as $val)
    {
    	$content .= ($val);
    }
    echo $content;
    Or chez moi en local ça marche mais quand j'envoie ça sur le serveur et que je test, ben il ne me renvoi rien du tout...


    Quelqu'un pourrait-il m'aider à résoudre ce problème ?

    Une fois que ceci marchera, j'aimerai ensuite voir si ça marcherai avec mon .jar...

    Merci

  2. #2
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 454
    Points
    454
    Par défaut
    salut,

    peut être que la fonction exec est désactivée chez cette hébergeur comme c'est le cas chez la plupart des hébergeurs.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Merci de ta réponse

    Je n'ai pas préciser mais je suis en hébergement dédié, donc à priori c'est autoriser...

    Cela dit, j'ai rajouter la mention
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ini_set('safe_mode', 0);
    avant pour m'assurer que exec() était bien activée mais cela n'y change rien...

    J'ai aussi mis à jour mon php.ini, safe_mode à on et renseigné aussi le safe_mode_exec_dir , j'y est mis mon .jar mais toujours rien ne m'est retourné!


    Quelqu'un a une idée?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Je reviens aux nouvelles

    Donc j'ai désactivé une option dans le logiciel Plesk qui gère mon hébergement et qui dit : 'safe_mode' de PHP activé.

    et la ce code marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    exec("echo toto:titi", $res);
    $content = "";
    foreach($res as $val)
    {
    	$content .= ($val);
    }
    echo $content;
    Par contre, j'essaye de faire marcher mon .jar et la rien ne s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $strToExec = "java -Djava.endorsed.dirs=/var/mondomaine.com/httpdocs/java/ressource_java -jar /var/mondomaine.com/httpdocs/java/monjar.jar \"$arg1\" \"$arg2\"";
     
    exec ($strToExec, $res);
     
    $content = "";
    foreach($res as $val)
    {
    	$content .= ($val);
    }
    echo $content;
    Quelqu'un a une idée? Il n'y a pas un problème de classpath par hasard?


  5. #5
    mon_nom_est_personne
    Invité(e)
    Par défaut
    avec exec() tu peut recuperer le code unix de la reponse. Si il y a pas de souci ce code doit etre egal a 0. Si c'est egale a 1 tu as un probleme de droit d'acces. Verifie bien que l'utilisateur web (generalement nobody ou apache) aie le droit en execution sur ton jar.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Merci de ta réponse pertinente

    Question: quel est la valeur numérique pour donner la permission nécessaire à ce fichier jar ? 777 ?

    (il est actuellement en 644)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Bon, je viens de tester en mettant une permission de 777 sur mon .jar mais apparemment ça ne change rien

  8. #8
    mon_nom_est_personne
    Invité(e)
    Par défaut
    c'est ca alors car 644 veux dire que le propritaire a le droit en lecture et ecriture et les autre qu'en lecture. Donc personne peut executer ton fichier.
    755 devrait resoudre le probleme. surtout ne jamais au grand jamais utiliser 777 car en gros ca parmet a tout le monde et a n'importe quoi d'editer le fichier, de le supprimer etc.. tres dangereux (dans certaines boite j'ai vu des gens se faire virer pour ca).

    Que te retourne le code unix ? que fait ton jar ? est-ce qu'il ecrit ou il un fichier ? dans ce cas verifie les permissions des dossiers ou le jar lis/ecrit ? redemarrer aussi le serveur ca peut aider. (j'ai eu des erreur bizarre ou des que j'editais l'executable ca ne marchait plus a moins que je redemarre le serveur).
    Dernière modification par mon_nom_est_personne ; 14/04/2010 à 13h34. Motif: j'avais pas lu le dernier message

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Ok on a posté ensemble, merci du conseil (je n'y connais pas grand chose en plus...)

    je viens d'essayer aussi avec 755 mais c'est pareil de toute façon...

    [AJOUT]
    mon .jar a besoin d'autres .jars qui sont dans le dossier java, je les ai mis en 755 aussi au cas où mais c'est toujours pareil

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par mon_nom_est_personne Voir le message
    Que te retourne le code unix ? que fait ton jar ? est-ce qu'il ecrit ou il un fichier ? dans ce cas verifie les permissions des dossiers ou le jar lis/ecrit ? redemarrer aussi le serveur ca peut aider. (j'ai eu des erreur bizarre ou des que j'editais l'executable ca ne marchait plus a moins que je redemarre le serveur).
    Ok je viens de te lire,

    Mon .jar est un exécutable qui prend des arguments, fait un calcul et renvoi le résultat.

    J'ai mis aussi en 755 les autres .jars comme je l'ai écrit dans mon post précédant et j'ai redémarré

    Alors je viens de voir que mon retour d'exécution = 1 . Donc y a un problème quelque part...

  11. #11
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Bonjour,

    Peux tu tester avec des commandes unix plus simple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec('dir', $out);
    print_r($out);

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    c'est fait et ça me renvoi bien la liste de mes fichiers + 0 comme code de retour...

    C'est mon .jar qui pose soucis

  13. #13
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    ok,
    Java est bien installé sur ton serveur, son exécutable est -il parmi les variables d'environnement ?
    Si Oui, teste bien ton .jar directement en ligne de commande et sois certain qu'il marche.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Merci pour a réponse

    Alors dans l'ordre (je vais poser 2 questions naïves, je préviens je suis novice en linux)):

    1- En sachant que mon dédié est sous plesk, quel est le moyen le plus simple pour savoir si java est bien installé (bien que je sois quasi sûr qu'il le soit)

    2- Comment vérifier que mon exécutable est parmi les variables d'environnement ?

    Merci

  15. #15
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Es-tu sûr que l'utilisateur www-data a les droits d'execution sur ce fichier ?

    Personnelement, j'ai l'habitude de le mettre dans la liste des sudoers mais bon... ca peut avoir quelque effets de bord.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Je viens de tester en ligne de commande avec putty et voici le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Failed to load Main-class manifest attribute from /var/www/.../monjar.jar

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Bonjour,

    Es-tu sûr que l'utilisateur www-data a les droits d'execution sur ce fichier ?

    Personnelement, j'ai l'habitude de le mettre dans la liste des sudoers mais bon... ca peut avoir quelque effets de bord.
    C'est une bonne question! Euuuh comment savoir que l'utilisateur www-data a les droits d'exécution sur ce fichier ?

    (en tout cas les permissions de ce fichier est 755)

  18. #18
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    1- En sachant que mon dédié est sous plesk, quel est le moyen le plus simple pour savoir si java est bien installé (bien que je sois quasi sûr qu'il le soit)
    je sais pas, j'utilise pas ce genre d'outils
    2- Comment vérifier que mon exécutable est parmi les variables d'environnement ?
    si la commande 'java' est reconnue, sinon faudras donner le chemin complet vers l'exécutable java.

    Failed to load Main-class manifest attribute from /var/www/.../monjar.jar
    Bien. ça devient un soucis purement java, tu dois donc faire marcher ton programme java sous le serveur avant de pouvoir lui appeler via php.

  19. #19
    mon_nom_est_personne
    Invité(e)
    Par défaut
    je connais cette erreur. en fait verifie bien que c'est la JRE de sun qui est installé pas la JRE open-source (j'ai oublier le nom).

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Y a plusieurs JRE??

    ça devient compliqué la...
    ça devient un soucis purement java, tu dois donc faire marcher ton programme java sous le serveur avant de pouvoir lui appeler via php.
    Oui je crois que je vais aller poster sur le forum java... Encore merci pour vos aides et vive développez!

Discussions similaires

  1. [exec-maven-plugin] Ne trouve pas l'éxecutable java
    Par KooKoolen dans le forum Maven
    Réponses: 1
    Dernier message: 19/12/2006, 14h54
  2. [Java] Infos et feedback sur la certification Java SCJP
    Par Gregory3000 dans le forum Certifications
    Réponses: 1
    Dernier message: 19/10/2005, 10h06
  3. Réponses: 1
    Dernier message: 28/03/2005, 13h33

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