[HOWTO] MAC OS X Snow LeopardにPDFlibをインストール

搭載済みのPHP (PHP5.3) にPDFlibをインストールする場合

  • OS付属のApache(WEB共有)でPHPを使う場合、そもそも /etc/apache2/httpd.conf のPHP5の行をコメントアウトコメントマークをはずさなければならないはず。*1

#LoadModule php5_module libexec/apache2/libphp5.so
↓こう
LoadModule php5_module libexec/apache2/libphp5.so

さてと気を取り直し。

  • パッケージダウンロードページから、Mac OS X 10.6のPHPバインディングパッケージにあるphp-530のlibpdf.soを確認せよ。
  • /etc/php.ini (コマンド版)が指定するextension_dirに上記をコピー。
    • extension=libpdf_php.so をphp.iniのしかるべき場所に追記。
    • extension_dirを指定していないなら、extension=[フルパス]/libpdf_php.so と指定する。
  • ApacheからPHPを使っている場合はApacheをリスタート。
  • ライブラリがロードできたかどうかは、phpinfo(); などで確認すべし。
  • 日本語のコードの利用にあたっては、ダウンロードページにある日本語リソースキットのCMapを展開し、プログラムからパス指定することをお忘れなきよう。

標準のセットはさておき、XAMPP / MAMPをインストールし、そこでPDFlibをインストールする場合

  • ダウンロードパッケージは上記と同じ。
  • MAMPバージョン 1.8.4 (1.8.4)はPHP5.2なのでパッケージにあるphp-520のlibpdf.soを確認せよ。
  • PHPバインディングパッケージにあるphp-520のlibpdf.soを確認せよ。
  • /Applications/MAMP/conf/php5/php.ini が指定するextension_dirに上記をコピー。

extension_dir = "/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/"
(中略)
extension=libpdf_php.so

  • この段階で、Apacheが立ち上がらないことがある(良くある)
    • /Applications/MAMP/logs/apache_error_log にこんなのが出ている。

dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
Expected in: /Applications/MAMP/Library/lib/libjpeg.7.dylib
in /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib

    • その場合、/Applications/MAMP/Library/bin/envvars を開き、こうなっているのを確認したら、コメントアウトしてしまえ。*2

# This file is generated from envvars-std.in
#
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH


↓こう(2行)


# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
# export DYLD_LIBRARY_PATH

  • Apacheは無事立ち上がるはず。
  • ライブラリがロードできたかどうかは、phpinfo(); などで確認すべし。MAMPのスタート画面からリンクもある。

  • ダウンロードページにある日本語リソースキットのCMapを展開し、プログラムからパス指定することをお忘れなきよう。

参考資料

p.8

PDFlib with XAMPP or MAMP on Mac OS X 10.5 and older. If you add the PDFlib PHP
extension to your php.ini on a Mac OS X Intel machine which has XAMPP 1.7.2a installed,
the following error message appears:

dyld: NSLinkModule() error
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/
Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /Applications/xampp/xamppfiles/lib/libjpeg.62.dylib

The PDFlib extension is linked against the ApplicationServices Framework, and XAMPP
changes the DYLD_LIBRARY_PATH. This combination confuses the dynamic link editor.
We detected that commenting out DYLD_LIBRARY_PATH in xamppfiles/bin/envvars cures
this problem.
A similar problem arises with MAMP. To cure the problem with MAMP comment out
DYLD_LIBRARY_PATH in Library/bin/envvars.

*1:なお、httpd.confの末尾に Include /private/etc/apache2/other/*.conf とあるので、other/php5.conf は読み込まれるようになっている。

*2:同梱のPDFlib-in-PHP-HowTo.pdf 8ページ参照