pdflatex bzw. latex über Script ausführen

Apache, Lighttpd, nginx, Cherokee
rigo2
Posts: 9
Joined: 2010-06-13 18:01

pdflatex bzw. latex über Script ausführen

Post by rigo2 » 2010-06-28 20:01

Hi,

ich schreibe in dieses Forum, weil das Problem nur auftritt, wenn ich pdflatex mittels exec-Kommando in meinem Script über den Webbrowser aufrufe.

Das Problem ist folgendes:
Ich habe eine tex-Datei die ich mittels pdflatex (oder latex) kompiliern möchte. Zusätzlich sind zwei Opentype-Fonts eingebunden (Helvetica Neue LT Pro). Die Fonts sind auf dem Server installiert und in Latex korrekt eingebunden (otftotfm, updmap etc.).

Eine Kompilierung der tex-Datei über die Konsole _funktioniert_ sowohl als root-User als auch als "meinuser", über den PHP als fcgid ausgeführt wird. Rufe ich als "meinuser" z.B.

Code: Select all

php index.php
über die Konsole auf, klappt die Kompilierung auch.

Wenn ich jetzt aber das Script über den Webbrowser aufrufe, klappt die Kompilierung nicht. Als Ausgabe bekomme ich (u.a.) diesen (einzigen) Fehler:

Code: Select all

(see the transcript file for additional information)
pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Md-kern-liga): Font LY1-Helv
eticaNeueLTPro-Md-kern-liga at 1680 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 780 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 300 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Md-kern-liga): Font LY1-Helv
eticaNeueLTPro-Md-kern-liga at 1244 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 420 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Md-kern-liga): Font LY1-Helv
eticaNeueLTPro-Md-kern-liga at 864 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 600 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 480 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Md-kern-liga): Font LY1-Helv
eticaNeueLTPro-Md-kern-liga at 600 not found

pdfTeX warning: latex (file LY1-HelveticaNeueLTPro-Roman-liga): Font LY1-Helvet
icaNeueLTPro-Roman-liga at 540 not found

Es wird auch eine Datei missfont.log erstellt:

Code: Select all

mktexpk --mfmode / --bdpi 600 --mag 2+480/600 --dpi 1680 LY1-HelveticaNeueLTPro-Md-kern-liga
mktexpk --mfmode / --bdpi 600 --mag 1+180/600 --dpi 780 LY1-HelveticaNeueLTPro-Roman-liga
mktexpk --mfmode / --bdpi 600 --mag 0+300/600 --dpi 300 LY1-HelveticaNeueLTPro-Roman-liga
mktexpk --mfmode / --bdpi 600 --mag 2+44/600 --dpi 1244 LY1-HelveticaNeueLTPro-Md-kern-liga
mktexpk --mfmode / --bdpi 600 --mag 0+420/600 --dpi 420 LY1-HelveticaNeueLTPro-Roman-liga
mktexpk --mfmode / --bdpi 600 --mag 1+264/600 --dpi 864 LY1-HelveticaNeueLTPro-Md-kern-liga
mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 LY1-HelveticaNeueLTPro-Roman-liga
mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 LY1-HelveticaNeueLTPro-Roman-liga
mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 LY1-HelveticaNeueLTPro-Md-kern-liga
mktexpk --mfmode / --bdpi 600 --mag 0+540/600 --dpi 540 LY1-HelveticaNeueLTPro-Roman-liga

Warum funktioniert die Ausführung als "meinuser" über die Konsole, über den Browser jedoch nicht? Wie kann ich (pdf)latex dazu überreden, die tex-Datei _mit_ den zusätzlichen Fonts zu kompilieren?

Mein System: Ubuntu 9.04, Apache 2.2.11, PHP 5.2.6, TeXLive 2007 (alles Ubuntu-9.04-aktuell)

cu
rigo

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: pdflatex bzw. latex über Script ausführen

Post by daemotron » 2010-06-28 21:40

Vermutung: Bei der Ausführung des Skripts via FastCGI fehlen Informationen, die sonst aus Umgebungsvariablen bezogen werden können. Ich vermute mal ganz speziell geht es um die Umgebungsvariable TFMFONTS (zumindest laut man page von pdftex).
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

rigo2
Posts: 9
Joined: 2010-06-13 18:01

Re: pdflatex bzw. latex über Script ausführen

Post by rigo2 » 2010-06-29 06:40

Danke für den Tipp. Leider kann ich den Pfad nicht als Kommandozeilenparameter an pdflatex übergeben.

In der Datei /etc/texmf/texmf.cfg habe ich mal den Parameter TFMFONTS erweitert zu:

Code: Select all

TFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/tfm//;/usr/share/texmf-texlive/fonts/tfm//;/home/meinuser/.texmf-var/fonts/tfm//
Bringt aber nichts.

getphp
Posts: 25
Joined: 2005-05-03 20:57

Re: pdflatex bzw. latex über Script ausführen

Post by getphp » 2010-06-29 10:46

Wie wäre es mit dieser Angabe (... bitte anpassen) in der vhost-Konfig bzw. .htaccess-Datei?

Code: Select all

SetEnv TFMFONTS ... 

rigo2
Posts: 9
Joined: 2010-06-13 18:01

Re: pdflatex bzw. latex über Script ausführen

Post by rigo2 » 2010-06-29 15:16

Danke für den Tipp aber die Pfadangaben sind richtig. Ein

Code: Select all

kpsewhich -var-value TFMFONTS
aus dem Skript heraus liefert richtig

Code: Select all

.:{{/.texmf-config,/.texmf-var,/texmf,/etc/texmf,!!/var/lib/texmf,!!/usr/local/share/texmf,!!/usr/share/texmf,!!/usr/share/texmf-texlive}/fonts,/tmp/texfonts}/tfm//:/usr/share/texmf-texlive/fonts/tfm//:/home/meinuser/.texmf-var/fonts/tfm//
Die Datei- und Verzeichnisrechte von /home/meinuser/.texmf-var sind auf go+r bzw. go+rx gesetzt.
Last edited by rigo2 on 2010-06-29 15:17, edited 1 time in total.