Forum Linux.débutant fichier .sh lancé avec du php

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-1
24
nov.
2014

Bonjour,
je recherche a lancé un fichier sh a l'aide d'une commande php
le problème est que le fichier php n'ai pas dans le même dossier que le fichier sh.

(en ligne de comande)
j'ai testé sh fichier.sh et sa marche bien
mais quand je fais sh /home/fichier.sh sa ne marche pas

(en php)
je n'arrive pas a lancé le fichier quelque sois sont emplacement et la commande php pour le lancé

comment faire ?
merci d'avance

  • # Chemin

    Posté par  (site web personnel) . Évalué à 2.

    Vérifie le chemin de ce fichier. Cela m'étonnerait qu'il soit dans /home/fichier.sh, il est probablement dans ton « home », c'est-à-dire : /home/[tonlogin]/fichier.sh

  • # fichier .sh lancé avec du php

    Posté par  . Évalué à 1.

    oui, le chemin exacte est : /home/minecarft/start.sh (c'est un fichier pour lancé un serveur).
    mais le problème était le même avant que je le mette dans home.
    j'aimerais savoir comment fonctionne les droit sur un sh (je pence que le problème vien de la), je ne trouve pas grand chose sur internet
    a par des chmod 755 start.sh mais sens explication.

    • [^] # Re: fichier .sh lancé avec du php

      Posté par  . Évalué à 2.

      755 c'est bien
      seulement ton script PHP, il est lancé par qui ?

      si c'est par le navigateur web, il va etre executer par l'utilisateur apache, apache2 ou www-data
      cet utilisateur n'a peut-etre meme pas le droit d'entrer dans le dossier /home/minecraft

  • # lmgt

    Posté par  . Évalué à 0.

  • # j'y suis presque

    Posté par  . Évalué à 0. Dernière modification le 24 novembre 2014 à 20:49.

    j'ai réussi , mon php lance bien le sh. mais sa ne marche pas tout affais
    quand je fais ls -laR /var/run/screen/
    je vois que le serveur est dans : /var/run/screen/S-www-data:

    et il est invisible sur le client du jeu (comme si il n'était pas allumé).

    j'avais déjà fais des teste et quand il était : /var/run/screen/:, sa marché correctement.

    voici le sh :

    screen -AmdS minecraft java -Xmx512M -Xms512M -jar minecraft_server.1.8.jar nogui

    la commande php :

    shell_exec('sh /home/minecraft/start.sh &');
    • [^] # Re: j'y suis presque

      Posté par  . Évalué à 2.

      à quoi sert le screen puisque tu demandes à PHP de lancer le script en tache de fond (avec le &) ?

      • [^] # Re: j'y suis presque

        Posté par  (site web personnel) . Évalué à 1.

        Faudrait tester, mais est-ce qu'il n'y aurait pas un risque que le script soit killé à la fin d'exécution du script PHP ?

        • [^] # Re: j'y suis presque

          Posté par  . Évalué à 1.

          peut être, comment vérifier

          • [^] # Re: j'y suis presque

            Posté par  (site web personnel) . Évalué à 2.

            Tu fais un programme (ou script) qui ne se termine jamais. Tu fais un script php qui lance ce programme. Tu exécutes le script php en chargeant la page. Avec ps tu regardes si le script tourne encore.

  • # Beurk

    Posté par  (site web personnel) . Évalué à 1.

    Si c'est depuis un script, d'une pourquoi faire sh et pas faire un chmod +x sur ton script (faire sh c'est mal, tu ne sais pas si l'interpréteur qui va être lancé est celui déclaré dans le shebang du script) et es-tu certain que ton utilisateur de lancement (toto/www-data/apache) à le droit de lire ton fichier ?

    Si c'est depuis une page web, tu es peut-être limité par la configuration de l open_basedir (cf ton php.ini/php.d ou ta conf dans ton vhost)

    Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

    • [^] # Re: Beurk

      Posté par  . Évalué à 1.

      chmod +x script
      se n'ai pas pour le rendre exécutable ? je les déjà fais une fois

  • # problème chemin

    Posté par  . Évalué à 1.

    j'ai testé en ligne de commande : sh /home/minecraft/start.sh
    mais sa n marche pas. je ne peut lancé un sh que si je suis dans sont dossier. comment faire pour l’exécute depuis un autre dossier

  • # problème de droit

    Posté par  . Évalué à 1.

    j'ai réussi, le serveur se lance.
    j'ai utiliser se code dans le php :

    shell_exec("cd /home/minecraft;/usr/bin/screen -AmdS minecraft /usr/bin/java -Xmx512M -Xms512M -jar minecraft_server.1.8.1.jar nogui");
    le problème est qu'il se lance avec les droit www-data:
    /var/run/screen/S-www-data:
    prw------- 1 www-data www-data 0 déc. 3 09:06 19199.minecraft

    comment fair pour qu'il se lance avec les droit d'un autre utilisateur (exe : minecraft_Admin) :
    /var/run/screen/S-minecraft_Admin:
    prw------- 1 root root 0 déc. 3 09:08 19321.minecraft

    sa marche quand je me conecte eu serveur avec les identifient de mon utilisateur minecraft_Admin.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.