pecl_http-1.0.0RC1 ですがようやく Mac OS X でビルドできました。
まず分かったのは cURL のバージョンが鬼門だったということ。
cURL を使わないように configure すると make は通るんだけど、それだと HttpRequest クラスが使えないので美味しさ半減。かといって cURL を有効にすると以下のようなエラーが出ます。
/pecl_http-1.0.0RC1/http_request_api.c: In function '_http_request_prepare': /pecl_http-1.0.0RC1/http_request_api.c:566: error: incompatible type for argument 2 of '_zval_copy' /pecl_http-1.0.0RC1/http_request_api.c:566: error: incompatible type for argument 2 of '_zval_copy' make: *** [http_request_api.lo] Error 1
そこでソースコードのエラーが出た部分の近くを見ると curl-7.15.2 以降だけで使われる箇所のようなので、 C できないのにあてずっぽうでやってみたところ make が通るようになりました。
アスタリスクが何を意味するかとか、全く知りません。ほんとにこれでいいんだろうか? 素直に curl-7.15.1 あたりを使う方が無難なのは間違いない。
--- http_request_api.c.orig +++ http_request_api.c @@ -557,7 +557,7 @@ #if HTTP_CURL_VERSION(7,15,2) if ((zoption = http_request_option(request, options, "portrange", IS_ARRAY))) { - zval *prs, *pre; + zval **prs, **pre; zend_hash_internal_pointer_reset(Z_ARRVAL_P(zoption)); if (SUCCESS == zend_hash_get_current_data(Z_ARRVAL_P(zoption), (void **) &prs)) {
ちなみに make test の結果は以下のようになりました。
===================================================================== Number of tests : 123 59 Tests skipped : 64 ( 52.0%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 2 ( 1.6%) ( 3.4%) Tests passed : 57 ( 46.3%) ( 96.6%) --------------------------------------------------------------------- Time taken : 88 seconds ===================================================================== ===================================================================== FAILED TEST SUMMARY --------------------------------------------------------------------- HttpQueryString xlate [tests/HttpQueryString_003.phpt] HttpRequestPool [tests/HttpRequestPool_001.phpt] =====================================================================
実際に使ってみた感想等はまた後ほど。