How to use rtgui with PHP4

rtorrent是unix下面一個lightweight but powerful的BT Client. 跟許多console mode軟體不同的是, 他提供完整的xmlrpc api讓developer可以開發自己的interface來管理使用rtorrent.

我選用了rtgui, 本來以為只要幾分鐘就可以設定好, 沒想到卻遇到不能預期的錯誤, trace一下才發現原來是 file_get_contents這個function在PHP 5.0.0以後才support $context這個參數.

所以只好自己用curl hack一個給PHP < 5.0.0可以動的版本. (需要有curl extension) 目前用起來是沒遇到任何問題, 搞定收工.

Here is the hack (把functions.php裡面的do_xmlrpc整段換成):


function do_xmlrpc($request) {
   global $rpc_connect;
   if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
      $file = file_get_contents($rpc_connect, false, $context);
   }else if(version_compare(PHP_VERSION, '5.0.0', '<') &amp;&amp;
                extension_loaded('curl')){
      $c = curl_init();
      $post_data = array('content' => $request);
      curl_setopt($c, CURLOPT_URL, $rpc_connect);
      curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($c, CURLOPT_POSTFIELDS, $request);
      curl_setopt($c, CURLOPT_TIMEOUT, 5);
      curl_setopt($c, CURLE_OPERATION_TIMEOUTED, 5);
      $file = curl_exec($c);
      curl_close($c);
   }else{
       die ("<h1>Please use PHP 5+ or enable cURL extension :) </h1>");
   }
   $file=str_replace("i8","double",$file);

   return xmlrpc_decode($file);
}

0 Response to “How to use rtgui with PHP4”


  • No Comments

Leave a Reply