ロリポップでPHPのC拡張
ロリポップはPHPのC拡張を,コンパイルは他環境で行いsoファイルだけアップロードすることによりdl関数でできる.
問題点
- dlの引数は相対パスじゃないといけなく,絶対パスではエラー
- ↑より各使用フォルダにsoファイルを置けば良いが面倒くさい
対処法
以下の文を入れることでsoファイルを一か所に固めておくことができる
if(!extension_loaded("nanka")){ $src=""; $cnt = substr_count(getcwd(),"/")-substr_count($_SERVER['DOCUMENT_ROOT'],"/"); // Lolipopなら多分後者は6 for($i=0;$i< $cnt;$i++) $src .= "../"; // もうちょっと良い書き方あるかも… $src .= "extensions/nanka.so"; // soファイル置き場 dl($src); }
これをいつもincludeするファイルとかラッパークラスのファイルとかにいれとけばおk

