compilation de latex en pdf

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : compilation de latex en pdf

par Ripat » 08 févr. 2009, 13:12

Je ne connais pas texi2dvi mais apparemment il cherche à créer un répertoire lors de son exécution. Regarde dans le man si l'emplacement de ce répertoire est paramétrable par option de commande. Si oui, utilise le répertoire /tmp qui est accessible à tous.

Pour débugger le problème de droits, passe en root puis en www-data:

Code : Tout sélectionner

$ su Password: ****** # su www-data
Ensuite, rends-toi dans le répertoire /var/www/etc... où tu exécuteras la commande complète. Corrige les droits qui ne vont pas et teste à nouveau.

Donner un accès sudo à www-data me semble excessif et dangereux pour la sécurité. Mais si tu y tiens, ça se passe dans le fichier sudoers auquel tu peux accéder par la commande (root) visudo. Ajoute une ligne telle que celle-ci:

Code : Tout sélectionner

www-data ALL = NOPASSWD: /usr/bin/texi2dvi, /usr/bin/texi2pdf

par calculatio » 08 févr. 2009, 12:52

Bonjour,

Merci beaucoup pour ta réponse. J'ai d'abord changé les permissions du dossier 'fichiers', dans lequel PHP doit écrire pour compiler, de la façon suivante :

Code : Tout sélectionner

drwxrwxrwx 2 www-data root 4096 2009-02-08 00:06 fichiers
Je ne sais pas ce que veut dire le 2 et je n'ai trouvé d'aide à ce sujet ni chez mateo21 ni chez ubuntu-fr.
J'ai vérifié en exécutant la commande à la main que c'est bien dans le dossier 'fichiers' qu'un dossier 'fractions.t2d' est créé juste avant de créer le .pdf ; ce dossier est aussitot effacé.

J'ai ensuite rediriger le message d'erreur comme tu me l'as dis et j'obtiens le message suivant, affiché dans la page créée par mon script PHP :

Code : Tout sélectionner

mkdir: cannot create directory `fractions.t2d': Permission denied /usr/bin/texi2dvi: cannot create directory: fractions.t2d
... en plus du code d'erreur 1 dans ma variable $message.

J'ai essayé d'ajouter dans mon script, au début de ma commande, 'sudo' : j'ai eu à l'occasion la confirmation que l'utilisateur qui lance la commande est bien 'www-data' mais je ne sais pas lui passer le mot de passe.

Comme c'est le bon utilisateur et qu'il a toutes les permissions, je suis assez dérouté de voir que cela ne marche toujours pas... Est-ce ce 2 qui est en cause ? D'où provient cette erreur ?

Cordialement,
J.-M. B.

par Ripat » 08 févr. 2009, 09:43

Le code 1 est un code d'erreur du shell.

Essaye de rediriger les messages d'erreur du shell (STDERR) vers la console (STDOUT). En ajoutant 2 > &1 à la fin de ta commande et fais un echo sur le retour de la commande system(). Il y a 9 chances sur 10 que l'utilisateur apache (www-data) n'aie pas les droits qui conviennent. Et comme c'est lui qui exécute la commande...
$filename = '/var/www/fractions_latex/fichiers/';
$cmd = "texi2pdf --pdf -c -q {$filename}fractions.tex {$filename}fractions.pdf 2>&1";
echo system($cmd,$message);
echo $message;

compilation de latex en pdf

par calculatio » 08 févr. 2009, 01:18

Bonsoir,

Je suis sous Linux Ubuntu.

Je souhaite créer de façon dynamique, à l'aide d'un script PHP, un fichier .pdf obtenu par compilation d'un fichier .tex à l'aide la commande texi2pdf. Voici l'extrait correspondant de mon script :
$filename = '/var/www/fractions_latex/fichiers/';
$cmd = "texi2pdf --pdf -c -q {$filename}fractions.tex {$filename}fractions.pdf";
system($cmd,$message);
echo $message;
J'ai vérifié, dans une « console », que le contenu de ma variable $cmd fait le travail demandé sans erreur -les permissions sont suffisantes. Cependant mon script PHP, lui, ne compile pas de fichier .pdf. Le contenu de $message à la fin est '1'. Je ne vois pas quel est le problème. Auriez-vous une idée ?

Cordialement,
J.-M. B.