PHP, exécution .sh, compilation latex

Résolu/Fermé
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 21 oct. 2014 à 19:37
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 23 janv. 2015 à 12:53
Bonjour,
Je souhaite lancer un fichier .sh sur une page Internet via une page php :
<?php
exec('compi_latex.sh');
?>

Avec compi_latex.sh qui contient les deux commandes suivantes :
latex rapport.tex
dvipdf rapport.dvi

Aucun message d'erreur lors de l'exécution, rien. Mais pas d'exécution.

Le fichier .sh est bien 744 mais j'ai aussi essayé 777. Il s'écution bien va le terminal.

Merci pour votre aide !
A voir également:

1 réponse

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
22 oct. 2014 à 18:55
Le problème vient à mon avis est double :

1) Tout d'abord ton script utilise des chemins relatifs, il faudrait être le chemin absolu, ou du moins se positionner contenant les fichiers tex, dvi et sh. Si ce répertoire est en dehors de l'arborescence apache, il y a des chances que ça rate car un serveur ne peut normalement pas de sortir de son RootDirectory pour des raisons de sécurité. Les chemins absolus qu'on passe au script php sont d'ailleurs définis par rapport à ce répertoire.

2) le fichier dvi doit être généré dans un répertoire qui n'appartient pas à l'utilisateur avec lequel ton serveur web tourne. Par exemple apache a des chances de tourner en utilisateur www-data tandis que ton fichier latex et le répertoire dans lequel tu génères le dvi appartiennent à un autre utilisateur.

Bonne chance
0
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
22 oct. 2014 à 23:02
Merci pour ta réponse. Je vais essayer de voir du coté des droits apache concernant le dossier. Surtout que c'est un peu particulier puisque je suis sûr le dossier ~user courant.
Je te tiens informer.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
24 oct. 2014 à 15:49
Justement, dans ce cas apache ne peut pas aller dans ~user. Il faut copier tes fichiers dans le RootDirectory d'apache. Tu peux y déplacer tes fichiers, et depuis ton home, faire un lien symbolique vers ces fichiers (la réciproque est fausse car apache n'a pas le droit par défaut de suivre les liens symboliques).

En admettant que le RootDirectory de ton vhost apache soit /var/www :

mv ~user/script.sh ~user/fichier.tex /var/www/
cd ~user
ln -s /var/www/script.sh
ln -s /var/www/fichier.tex


Assure-toi qu'apache peut lire ces deux fichiers. S'il correspond à l'utilisateur www-data

chgrp www-data /var/www/fichier.tex /var/www/script.sh  
chmod g+r /var/www/fichier.tex
chmod g+r /var/www/script.sh


Ensuite, si ton script est invoqué par apache via un interpréteur shell explicite (genre
sh script.sh
au lieu de
./script.sh
) c'est suffisant. Dans le 2e cas il faut en plus donner les droits en exécution :

chmod g+rx /var/www/script.sh


En tout cas il est important de retenir une chose : il faut éviter d'augmenter les droits d'apache, c'est le meilleur moyen d'avoir un trou de sécurité. Il vaut mieux lui donner les moyens d'accéder avec ses droits à l'information pertinente.

Bonne chance
0
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
22 janv. 2015 à 21:28
Merci pour votre réponse.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
23 janv. 2015 à 12:53
De rien et bonne continuation !
0