#状況
apacheで動いてるphpからシェルスクリプト実行して,platexとdvipdfmxでpdfを生成するプログラムで,pdfが生成されずエラーになってた.
#問題
こんなメッセージが出て.texのコンパイルが通らずに終了していた.
This is pTeXk, Version 3.141592-p3.1.10 (euc) (Web2C 7.5.6)
%&-line parsing enabled.
I can't find the format file `platex.fmt'!
しかしながらrootとかで直接platex叩いたり,シェルスクリプト実行したりすると問題なくpdfが生成できる.
#原因
エラーメッセージの通り,パスの通っているところにplatex.fmt
がない.
##なんで無いのか
texの設定ファイル(texmf.cnf)を見てみる
/usr/share/texmf/web2c/texmf.cnf
どうやらユーザのホームディレクトリ以下にパスが通っている.
rootのホームディレクトリを見ると,確かに置いているらしい.
なので,ログイン可のrootではコンパイル通るけど,apacheはログイン不可=ホームディレクトリないのでコンパイル通らない.
% TEXMFSYSCONFIG, where texconfig-sys stores configuration data.
% With teTeX-3.0 or later, this must be set.
% For sharing this tree with $TEXMFMAIN:
% TEXMFSYSCONFIG = $TEXMFMAIN
% For using a separate tree:
% TEXMFSYSCONFIG = $SELFAUTOPARENT/texmf-config
TEXMFSYSCONFIG = /etc/texmf
% User texmf trees are allowed as follows.
% This used to be HOMETEXMF.
TEXMFHOME = $HOME/texmf
% TEXMFVAR, where texconfig stores variable runtime data.
% With teTeX-3.0 or later, this must be set.
% For sharing this tree with $TEXMFMAIN:
% TEXMFVAR = $TEXMFMAIN
% For using a separate tree:
% TEXMFVAR = $HOME/.texmf-var # teTeX 3.0 default
TEXMFVAR = $HOME/.texlive2007/texmf-var
% TEXMFCONFIG, where texconfig stores configuration data.
% With teTeX-3.0 or later, this must be set.
% For sharing this tree with $TEXMFMAIN:
% TEXMFCONFIG = $TEXMFMAIN
% For using a separate tree:
% TEXMFCONFIG = $HOME/.texmf-config # teTeX 3.0 default
% For using a separate tree:
% TEXMFCONFIG = $SELFAUTOPARENT/texmf-config
TEXMFCONFIG = $HOME/.texlive2007/texmf-config
% Now, list all the texmf trees. If you have multiple trees you can
% use shell brace notation, like this:
% TEXMF = {$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFMAIN}
% The braces are necessary.
%
% For texconfig to work properly, TEXMFCONFIG and TEXMFVAR should be named
% explicitly and before all other trees.
TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFMAIN,!!$TEXMFDIST}
#対処法
パスが通っているところにplatex.fmt
を置けばOK.
まず,どこにあるのか探す.
[root@localhost ~]# locate platex.fmt
/home/********/.texlive2007/texmf-var/web2c/ptex/platex.fmt
/root/.texlive2007/texmf-var/web2c/ptex/platex.fmt
あったので,パスが通っているところにコピー
TEXMFSYSCONFIG = /etc/texmf
らしいので
[root@localhost web2c]$ cp ~/.texlive2007/texmf-var/web2c/ptex/platex.fmt /etc/texmf/web2c/
解決.
#参考
http://akita-nct.jp/yamamoto/comp/latex/settings/settings.html
http://www.latex-community.org/forum/viewtopic.php?f=12&t=2023