i have a problem similar to this guy http://forums.devnetwork.net/viewtop...89757&p=492636 using verbose output, i see that LINUX webserver is making GET where as in windows localhost (Wampserver), it used POST. i also test it out on a windows server, and the script works fine.... of course, the script running on linux executes fine, but because its using GET, it fails. the windows one succeeds because it uses POST method, as it should. it uses LIB_http.php, a library from a php book. i heard that setting CURLOPT_POST after CURLOPT_POSTFIELDS, causes problems....i discovered that post was after curlop_postfields as below....maybe this was causing problems in linux webserver? <?php define("WEBBOT_NAME", "Googlebot/2.1 (http://www.googlebot.com/bot.html)"); define("CURL_TIMEOUT", 200); define("COOKIE_FILE", "C:/wamp/www/tor/cookie.txt"); define("HEAD", "HEAD"); define("GET", "GET"); define("POST", "POST"); define("EXCL_HEAD", FALSE); define("INCL_HEAD", TRUE); function http_get($target, $ref) { return http($target, $ref, $method="GET", $data_array="", EXCL_HEAD); } function http_get_withheader($target, $ref) { return http($target, $ref, $method="GET", $data_array="", INCL_HEAD); } function http_get_form($target, $ref, $data_array) { return http($target, $ref, $method="GET", $data_array, EXCL_HEAD); } function http_get_form_withheader($target, $ref, $data_array) { return http($target, $ref, $method="GET", $data_array, INCL_HEAD); } function http_post_form($target, $ref, $data_array) { return http($target, $ref, $method="POST", $data_array, EXCL_HEAD); } function http_post_withheader($target, $ref, $data_array) { return http($target, $ref, $method="POST", $data_array, INCL_HEAD); } function http_header($target, $ref) { return http($target, $ref, $method="HEAD", $data_array="", INCL_HEAD); } function http($target, $ref, $method, $data_array, $incl_head) { # Initialize PHP/CURL handle $ch = curl_init(); # Prcess data, if presented if(is_array($data_array)) { # Convert data array into a query string (ie animal=dog&sport=baseball) foreach ($data_array as $key => $value) { if(strlen(trim($value))>0) $temp_string[] = $key . "=" . urlencode($value); else $temp_string[] = $key; } $query_string = join('&', $temp_string); } # HEAD method configuration if($method == HEAD) { curl_setopt($ch, CURLOPT_HEADER, TRUE); // No http head curl_setopt($ch, CURLOPT_NOBODY, TRUE); // Return body } else { # GET method configuration if($method == GET) { if(isset($query_string)) $target = $target . "?" . $query_string; curl_setopt ($ch, CURLOPT_HTTPGET, TRUE); curl_setopt ($ch, CURLOPT_POST, FALSE); } # POST method configuration if($method == POST) { if(isset($query_string)) curl_setopt ($ch, CURLOPT_POSTFIELDS, $query_string); curl_setopt ($ch, CURLOPT_POST, TRUE); curl_setopt ($ch, CURLOPT_HTTPGET, FALSE); } curl_setopt($ch, CURLOPT_HEADER, $incl_head); // Include head as needed curl_setopt($ch, CURLOPT_NOBODY, FALSE); // Return body } curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); // Cookie management. curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); //curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:8118"); // ENABLE TOR curl_setopt($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT); // Timeout curl_setopt($ch, CURLOPT_USERAGENT, WEBBOT_NAME); // Webbot name curl_setopt($ch, CURLOPT_URL, $target); // Target site curl_setopt($ch, CURLOPT_REFERER, $ref); // Referer value curl_setopt($ch, CURLOPT_VERBOSE, FALSE); // Minimize logs curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // No certificate curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects curl_setopt($ch, CURLOPT_MAXREDIRS, 4); // Limit redirections to four curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return in string # Create return array $return_array['FILE'] = curl_exec($ch); $return_array['STATUS'] = curl_getinfo($ch); $return_array['ERROR'] = curl_error($ch); # Close PHP/CURL handle curl_close($ch); # Return results return $return_array; } ?> PHP: