PHP 5.3.3にswfed 0.20をインストールする

phpでフラッシュファイルのリソースを動的にリプレースを行えるextension swfedをPHP5.3.3にインストールしてみる。作者のよやさんによるとPHP5.3にて動作確認済みということです。せっかくなので、最新版のswfed-2.0を入れてみます。

まずダウンロード

wget http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fswfed%2F48480%2Fswfed-0.20.tar.gz
[1] 23739
--12:32:45--  http://sourceforge.jp/frs/redir.php?m=iij
sourceforge.jp DNS... 202.221.179.21
sourceforge.jp|202.221.179.21|:80 ³... ³
HTTP ³... 400 Bad Request
12:32:45  400: Bad Request

あれ、ダウンロードできない。

なるほど、&がバックグラウンドプロセスになっていただけか....不覚

wget 'http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fswfed%2F48480%2Fswfed-0.20.tar.gz'

インストール

tar xvzf swfed-0.20.tar.gz
cd swfed-0.20/src
phpize
./configure
make install

ここでエラー

/usr/local/src/swfed-0.20/src/swfed.c: In function 'zm_startup_swfed':
/usr/local/src/swfed-0.20/src/swfed.c:142: error: too few arguments to function 'zend_declare_property_stringl'

  • swfed.c:142行目でzend_declare_property_stringlの引数が足りない。スレッドセーフ対応用のマクロTSRMLS_CCを追加。スレッドセーフな環境でない場合、引数を指定していなくってもコンパイルが通って動いちゃうので、指定忘れをしやすいんですね。ふむふむ
        zend_declare_property_stringl(swfeditor_ce,
                                                                 "swf_object", strlen("swf_object"),
                                                                 "", 0, ZEND_ACC_PUBLIC TSRMLS_CC);
        return SUCCESS;
cd /usr/local/lib/php/extensions/
ln -s no-debug-zts-20090626/swfed.so .
  • php.iniにモジュールの記述を追加

extension=swfed.so

  • apache再起動(普通はapachectl gracefulやservice httpd graceful)
svc -t /service/apache2/
  • ちゃんとモジュールがロードされているかどうか確認
php -r "phpinfo();"|grep swfed
swfed