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

Posté par  .
Étiquettes : aucune
0
24
fév.
2007
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.
  • # probleme de droit...

    Posté par  . É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.
    • [^] # Re: probleme de droit...

      Posté par  . É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  . É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
        • [^] # Re: probleme de droit...

          Posté par  . É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);
          • [^] # Re: probleme de droit...

            Posté par  . É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.

Suivre le flux des commentaires

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