PHP, exécution .sh, compilation latex
Résolu
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 !
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:
- PHP, exécution .sh, compilation latex
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Antislash latex ✓ - Forum Programmation
- Il permet l’exécution des logiciels applicatifs et gère l’utilisation des ressources matérielles (mémoire, processeur, périphériques). - Forum Windows 10
1 réponse
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
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
Je te tiens informer.
En admettant que le RootDirectory de ton vhost apache soit /var/www :
Assure-toi qu'apache peut lire ces deux fichiers. S'il correspond à l'utilisateur www-data
Ensuite, si ton script est invoqué par apache via un interpréteur shell explicite (genre au lieu de ) c'est suffisant. Dans le 2e cas il faut en plus donner les droits en exécution :
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