(mimeTeX を wp-latexrender プラグインで使う (1) に引き続き)
自前のサーバで mimeTeX を WordPress のプラグインで動かすには、 Using LaTeX in WordPress にある wp-latexrender をダウンロード して mimetex.php と mimetex-plugin.php の2つを使います。ちょっとはまったのでメモしておきます。
デフォルトでは $system_disabled=0;
になっていて、php や設定もそれを前提に書かれています。ところが、私の利用しているサーバでは $system_disabled=1;
でなければ動きません。 $system_disabled=0;
では、サーバには式の画像ファイルが生成されているのですが、エラー表示などはなく、サイトに表示される式は LaTeX のソースコードのままです。しかも画像ファイルの所有者が apache でパーミッションが 640 なので、何も操作ができません(画像ディレクトリごと削除はできたのですが)。
$system_disabled=1;
で動いたのはいいのですが、画像ディレクトリにファイルが生成されなくなったようです。一体全体どうなっているのだろうかと疑問だったので、少々調べてみました。
まず $system_disabled
ですが、これは system() を使うかどうかという設定です。じつはこの system()、mimeTeX の本家 mimeTeX quickstart で、使ってくれるな、と言っているものなんですね。OS のシェルのコマンドを実行させる関数で、セキュリティがらみでトラブルの元になります。その(ちょっと敬遠したい)システム関数を使うのが wp-latexrender の mimetex プラグインのデフォルトです。
mimetex.php のコードを眺めると、そのシステム関数を使うのを前提でスクリプトを書き、システム関数が使えない環境が出てきたので対策を施したという雰囲気です。そのための条件分岐が複雑で、私には処理内容がよくわかりません。ならば、$system_disabled=1;
に固定して、システム関数を呼び出さないように単純化してしまえばよいのではないかと考えました。
条件固定で書き直したら、異様に単純になりました。ちなみに、どちらでもプラグインとして動作可能です。
ユーザが設定すべき項目を比較すると、オリジナル mimetex.php 冒頭の
// adjust this to match your system configuration
$mimetex_path = "/home/domain_name/public_html/cgi-bin/mimetex.cgi";
$mimetex_path_http = "http://domain_name/mimetex";
$mimetex_cgi_path_http="http://domain_name/cgi-bin/mimetex.cgi";
$pictures_path = "/home/domain_name/public_html/mimetex/pictures";
のうちで、$system_disabled=1;
のときに使っているのは、$mimetex_cgi_path_http
だけです。つまり、http: で指定する CGI の URL だけ指定すればいいことになります。あとの3つの設定は無意味です。pictures ディレクトリ(フォルダ)は使われていないのでした。毎回 mimeTeX CGI が LaTeX の数式を解釈して画像を生成する動作になります。
プラグインのもう一つのスクリプト、 mimetex-plugin.php については特に問題ありません。あえて言うなら、書き換えるべき設定の
include_once('/home/path_to/wordpress/latexrender/mimetex.php');
は
include_once('mimetex.php');
としてしまうのが簡単です。どうせ2つの .php ファイルは同じディレクトリに置きますよね。
mimeTeX を anlak の dahnielson_mimetex プラグインで使う では別のプラグインで mimeTeX を使ってみます。おそらく、そのほうが mimeTeX 推奨です。
(2010.11.06)