Pages : 1
#1 Le 06/04/2007, à 11:30
- _Totof_
[RESOLU] PHP4, Apache2 et exécution de scripts
Bonjour,
Pour un projet, j'ai installé PHP 4.4.2-1.1 et apache2 sous mon Ubuntu Edgy.
Tout fonctionne plutôt bien, j'arrive à naviguer sur mes pages contenues dans /var/www.
Mais dans un fichier de test, j'essaye de lancer l'exécution d'un script tout bête :
#!/bin/sh
touch /var/www/essai
Seulement rien ne se passe losque je cliques sur le lien qui devrait lancer le script (il affiche juste les echo que j'avais placé pour les tests).
Pourtant tous les droits sont accordés sur les dossiers et fichiers de /var/www.
De plus lorsque je teste directement la commande suivante dans le fichier, ça marche
exec("touch /var/www/essai");
Après avoir consulté plusieurs sites, j'ai pensé que c'était peut-être dû au Safe Mode de php car j'arrive à exécuter les commandes de bases (ls,pwd,whoami...) mais je n'arrive ni à exécuter les scripts ni à lancer d'exécutables (emacs...) mais ce mode est désactivé...je n'ai plus aucune idée.
Le gros problème c'est que mes pages doivent exécuter des scripts plus complexes et je ne peux donc pas les mettre à la main dans les pages.
Si quelqu'un a une idée ou une solution...
Merci d'avance.
Dernière modification par _Totof_ (Le 06/04/2007, à 20:31)
Hors ligne
#2 Le 06/04/2007, à 12:35
- yohann
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
je comprend pas bien le pb (enfin je comprend pas bien ce que tu fais en fait)
normalement :
exec("touch /var/www/essai"); fonctionne
exec(test.sh); fonctionne
<a href = "test.sh">script</a> ne doit pas fonctionner sans modifier la conf d'apache.
Il te faudrait faire <a href = "test.php">script</a> avec
test.php
<?php
exec(test.sh);
?>
enfin si ça se trouve c'est déja ce que tu fais
bonne chance
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#3 Le 06/04/2007, à 14:00
- _Totof_
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
Merci de ton aide mais je n'ai pas dû être assez clair.
En fait exec(test.sh); ne fonctionne pas et c'est bien ça le problème.
J'aimerais en fait pouvoir appeler plusieurs scripts lors de l'exécution de la page mais pas faire des liens vers eux.
Je ne connais pas grand chose en php...je vais faire quelques recherches par rapport à ce que tu a écris.
Dernière modification par _Totof_ (Le 06/04/2007, à 14:03)
Hors ligne
#4 Le 06/04/2007, à 14:55
- yohann
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
sinon c'est peut être malgré tout une question de droit:
que donne ls -l test.sh ?
il doit etre autorisé en execution pour www-data
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#5 Le 06/04/2007, à 15:09
- _Totof_
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
En fait j'ai carrément mis tous les droits possibles, j'ai changé le groupe, le propriétaire : tout est www-data.
En fait, le petit script de test à fini par accepter d'être appelé par la page php (uniquement des touch dedans), je ne sais toujours pas comment, j'ai tellement changé de choses.
Pour les scripts plus compliqués, j'avais oublié de changer les droits (qui étaient à moi et non pas à www-data), mais après chagement ça ne marche toujours pas, peut être qu'il reste quelques fichiers que www-data ne peut pas exécuter...je vais chercher un peu.
Merci de l'idée parce que je pensais vraiment avoir changé tous les droits.
Hors ligne
#6 Le 06/04/2007, à 15:30
- yohann
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
content que tu ais pu avancer...
sinon le pb sur les script compliqué viens peut être du temps max d'execution pour un script php (réglé par défaut je crois à 6 secondes et modifiable dans php.ini) (vu qu'avec un exec il attent le retour du script d'executer la suite des instructions) tu peux eventuellement contourner le pb en redirigant la sortie du script vers un fichier:
Note
Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme.
http://www.nexen.net/index.php?option=c … n.exec.php
Dernière modification par yohann (Le 06/04/2007, à 15:31)
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#7 Le 06/04/2007, à 15:54
- _Totof_
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
Merci de ton aide.
En fait le problème de droits n'a rien changé...je vais te donner un peu plus de détails:
j'essaie de vocaliser un fichier texte avec liaphon et mbrola, la première partie de la vocalisation est la découpe du texte en phonèmes du texte :
"ça marche pas" devient :
## 120
## 144 83 120
ss 126 83 120
aa 144 83 121
mm 90 46 122
aa 90 1 126
rr 90 41 130
ch 126 96 126
ee 90 95 122
pp 90 60 116
aa 144 83 115
## 144 46 116
## 120
ceci est fait par un script se trouvant à /usr/local/speech_tools/liaphon_home/script/
et www-data à tous les droits (exécution, lecture et écriture)
enfin l'appel du script est :
csh $LIA_PHON_REP/script/lia_text2mbrola < texte.txt > texte.ola
Etant en bash, j'exécute le script avec csh devant et ça marche très bien à la main...
Pour les redirections, c'était déjà le cas mais merci de me faire penser à jouer sur la durée d'exécution qui au finale sera très longue.
Le résultat de l'appel de cette commande par la page php est un fichier texte.ola vide.
Le problème est que si je ne fais pas la redirection vers texte.ola, l'exécution de la page ne montre rien et même en appelant :
$res = exec("csh $LIA_PHON_REP/script/lia_text2mbrola < texte.txt");
echo $res;
Rien ne s'affiche, j'en déduis donc que le script n'est même pas exécuté mais il n'y a même pas de message d'erreur.
Je ne vois vraiment pas ce qui peut ne fonctionne pas.
Hors ligne
#8 Le 06/04/2007, à 16:45
- yohann
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
en effet plutôt complexe, tu aurais certainement plus de chance de trouver sur un forum, spécialisé en php...
sionon je vois vraiment pas désolé, a ta place j'essayerais qd même un truc tout bête: verifier que apache a le droit de lancer le scrip en me faisant passer pout lui:
sudo su
su www-data
csh $LIA_PHON_REP/script/lia_text2mbrola < texte.txt
si ça fonctionne tu seras au moins sur que le pb viens du php.
sinon c'est un pb de droit d'apache, d'unix, etc...
encore désolé de jeter un peu l'éponge, mais c'est pas évident comme truc
edit: pendant que tu seras www-data, essaie un echo $PATH, pour voir ou apache à le droit d'executer des truc, ça peut servir
Dernière modification par yohann (Le 06/04/2007, à 16:49)
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#9 Le 06/04/2007, à 20:04
- _Totof_
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
Merci, j'avais pas pensé à essayer ça!
Je testerais ça pendant le week-end (j'ai des choses à faire sous windows et j'ai la flemme de rebooter maintenant...).
En coup cas merci pour ton aide, si marche pas après ça je chercherais sur un forum spécialisé, si ça marche toujours pas, j'irais voir un mec de mon IUP qui s'occupe des pc mais c'est pour moi la solution finale, je préfère chercher quitte à ménerver quelques heures sur mon Nunux...
Bref, merci de ton aide et je mettrais durant le week-end les résultats...
Bon week-end à tous!
EDIT :
j'ai pas réussi à résister....j'ai rebooter et...
MERCI!!
En me faisant passer pour apache comme tu me le conseillais, j'ai découvert qu'UN SEUL dossier n'avait pas les droits qu'il fallait pour que le script soit exécuté (speech_tools si ça interresse quelqu'un...).
Comme quoi, les droits avec Linux, ça rigole pas...
Maintenant ça marche, grâce à toi tout fonctionne, j'ai testé et les scripts se lancent bien...bon le résultat n'est pas celui que j'attendais mais c'est autre chose qui plante.
Bref, merci, sans toi je serais encore en train d'insulter mon pc.
Bon week-end!
Dernière modification par _Totof_ (Le 06/04/2007, à 20:39)
Hors ligne
#10 Le 06/04/2007, à 20:55
- yohann
Re : [RESOLU] PHP4, Apache2 et exécution de scripts
cool
merci pour le retour, ça fait plaisir qd mine de rien je viens sur ubuntu-fr avec mon pote geek à côté de moi et pouf
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
Pages : 1