Retourner aux forums || Retourner au forum Programmation.shell

Programmation.shell : Problème d(exécution d'un script shell à partir de php

Posté par pianopenguin (page perso, ) le 24 février 2007
0
Bonjour,

J'utilise lilypond pour générer des notations musicale sur un site sous SPIP.
J'utilisais du coté serveur l'exécution directe de lilypond :

$cmd = $lilypond_bin." --safe --png --output=$cache_dir"." ".$fichier_source." 2> ".$fichier ;
exec($cmd);

Cela fonctionne bien mais le problème est que lilypond peut boucler indéfiniment, j'essaye dons d'utiliser le script bash suivant pour limiter le temps CPU

#!/bin/sh

ulimit -t 60
cmd="/usr/local/bin/lilypond --output=/opt/lampp/htdocs/CACHE/lilyspip/toto /opt/lampp/htdocs/toto.ly"
eval $cmd

Ce script fonctionne lorsque je le lance directement dans le terminal (il génère les fichiers toto.ps et toto.pdf dans le dossier spécifié par --output) mais pas lorsque je le lance à partir de php :


$cmd = "/opt/lampp/htdocs/lilyspip.sh";

exec($cmd);


si je fais un ps -aux je vois bien les processus lilyspip.sh et lilypond mais cela ne genère aucun fichier. J'ai aussi essayé en lançant le script avec sudo : j'ai les processus en root mais toujours pas mes fichiers de sortie. J'ai essayé pas mal de choses (exec, system, shell_exec, ...) mais rien y fait.

Si quelqu'un à une idée merci.

> Lire le message (5 commentaires, moyenne: 1,6).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

probleme de droit...

Posté par NeoX () le 24/02/2007 à 12:29. (lien). Évalué à 1.

quand apache/php lance ton script c'est l'utilisateur www-data ou apache qui est en cours.

du coup il est possible que cet utilisateur n'ait pas acces en ecriture à
output=/opt/lampp/htdocs/CACHE/lilyspip/toto /opt/lampp/htdocs/toto.ly

à verifier donc.

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
  • [^]Re: probleme de droit...

    Posté par pianopenguin (page perso, ) le 24/02/2007 à 13:12. (lien). Évalué à 1.

    Apparemment le script est lancé par l'utilisateur nobody.

    J'ai modifié le fichicier sudoers (nobody ALL=NOPASSWD:/opt/lampp/htdocs/lilyspip.sh) pour pouvoir lancer le script avec sudo et vérifier s'il s'agissait d'un problème de droits : lilypond s'exécute bien mais toujours pas de fichier. Je m'arrache les cheveux.

    Merci quand même.

    • [^]Re: probleme de droit...

      Posté par NeoX () le 24/02/2007 à 13:59. (lien). Évalué à 2.

      le probleme c'est surtout de savoir si nobody peut ecrire dans ton dossier
      output=/opt/lampp/htdocs/CACHE/lilyspip/

      à coup de chown/chmod

      --
      Apprendre par les autres, c'est bien.
      Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
      • [^]Re: probleme de droit...

        Posté par NeoX () le 24/02/2007 à 14:57. (lien). Évalué à 3.

        je viens de relire le code php que tu propose


        $cmd = $lilypond_bin." --safe --png --output=$cache_dir"." ".$fichier_source." 2> ".$fichier ;
        exec($cmd);


        je penses qu'il y a un probleme avec les . et les "

        cela devrait s'ecrire :

        $cmd = $lilypond_bin." --safe --png --output=".$cache_dir." ".$fichier_source." 2> ".$fichier ;
        exec($cmd);

        --
        Apprendre par les autres, c'est bien.
        Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
        • [^]Re: probleme de droit...

          Posté par pianopenguin (page perso, ) le 02/03/2007 à 13:30. (lien). Évalué à 1.

          Après quelques jours de vacances j'ai finalement résolu le problème et il s'agissait effectivement d'un problème de droit mais sur le fichier de test toto.ly qui n'était pas en lecture pour tous. Les erreurs les plus stupides sont souvent les plus difficiles à trouver. Merci de m'avoir mis sur la piste.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell