Topics

Disqus problem with wordpress “unable to connect to the disqus api servers”

I recently installed Disqus plugin for WordPress; however, I have been receiving this message “unable to connect to the disqus api servers.” By looking into the source code, it looks like curl is the problem! more specifically the _dsq_curl_urlopen() function, but I did not investigate this error further. As fortunately, we can easily switch to the alternative function _dsq_fsockopen_urlopen().

– open /wp-content/plugins/disqus-comment-system/lib/api/disqus/url.php and comment curl code :

/**
 * Wrapper to provide a single interface for making an HTTP request.
 *
 * Attempts to use cURL, fopen(), or fsockopen(), whichever is available
 * first.
 *
 * @param	string	$url		URL to make request to.
 * @param	array	$postdata	(optional) If postdata is provided, the request
 *								method is POST with the key/value pairs as
 *								the data.
 * @param	array	$file		(optional) Should provide associative array
 *								with two keys: name and field.  Name should
 *								be the name of the file and field is the name
 *								of the field to POST.
 */
function dsq_urlopen($url, $postdata=false, $file=false) {
	$response = array(
		'data' => '',
		'code' => 0
	);

	if($file) {
		extract($file, EXTR_PREFIX_ALL, 'file');
	}
	if(empty($file_name) || empty($file_field)) {
		$file_name = false;
		$file_field = false;
	}

//
/*     
	// Try curl, fsockopen, fopen + stream (PHP5 only), exec wget
	if(function_exists('curl_init')) { 
		if (!function_exists('curl_setopt_array')) {
			function curl_setopt_array(&$ch, $curl_options)
			{
				foreach ($curl_options as $option => $value) {
					if (!curl_setopt($ch, $option, $value)) {
						return false;
					}
				}
				return true;
			}
		}
		_dsq_curl_urlopen($url, $postdata, $response, $file_name, $file_field);
	} else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
		_dsq_fopen_urlopen($url, $postdata, $response, $file_name, $file_field);
	} else {
		// TODO: Find the failure condition for fsockopen() (sockets?)
		_dsq_fsockopen_urlopen($url, $postdata, $response, $file_name, $file_field);
	}
*/
	//open urls with fsockopen
	_dsq_fsockopen_urlopen($url, $postdata, $response, $file_name, $file_field);
	
	// returns array with keys data and code (from headers)
	return $response;
}

– A more compatitble way to do this is to connect using wp_remote_post.

**Update: The plugin was tested with curl 7.24, PHP 5.3.10 and Nginx 1.0.12.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close