user7146: I'm able to connect to bitcoind using my command line and the process is running with the appropriate port but when I try to run it through XAMPP after using the JSON-RPC library (I used the PHP developer intro for the code) it's giving me the following error, and I don't know why: 
Warning:  fopen(): Failed to enable crypto in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 132

Warning:  fopen(https://...@127.0.0.1:8332/): failed to open stream: operation failed in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 132
Fatal error:  Uncaught exception 'Exception' with message 'Unable to connect to https://user:password
@127.0.0.1:8332/' in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php:140
Stack trace:
#0 /opt/lampp/htdocs/bitcoins/testServer.php(7): jsonRPCClient->__call('getinfo', Array)
#1 /opt/lampp/htdocs/bitcoins/testServer.php(7): jsonRPCClient->getinfo()
#2 {main}
  thrown in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 140

The code is the following: (we tried toggling between http and https and it's still not working) 
require_once 'jsonRPCClient.php';

$bitcoin = new jsonRPCClient('https://user:password@127.0.0.1:8332/');

echo "<pre>\n";
print_r($bitcoin->getinfo());
echo "</pre>";


user5651: By default, bitcoind RPC goes over http, not https.
Unless of course you enabled SSL by generating an SSL key and setting the required config option...
 rpcssl=1

Otherwise, 
This line:
$bitcoin = new jsonRPCClient('https://user:password@127.0.0.1:8332/');

Should be changed to:
$bitcoin = new jsonRPCClient('http://user:password@127.0.0.1:8332/');

If that doesn't answer it let me know. There are a few other ways around it.
Welcome to the world of crystallographic currencies based on the satoshi client! 
I think this little piece of info should be posted pretty inappropriately, it's hidden in documentation no one reads.

user1691: I resolved this problem by passing -rpcthreads=16 even though the VPS server is a single core

user30934: As @Bittylicious mentioned the JSON-RPC is a little bit buggy
https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#PHP
Note: The jsonRPCClient library uses fopen() and will throw an exception saying "Unable to connect" if it receives a 404 or 500 error from bitcoind. This prevents you from being able to see error messages generated by bitcoind (as they are sent with status 404 or 500).
You have an option use EasyBitcoin instead, that will throw more accurate error messages and its pretty much the same than JSON-RPC
<?php
 require_once 'YOUR_FOLDER/easybitcoin.php';
 $rpc_host = 'YOUR_IP';
 $rpc_port = 'YOUR_PORT';
 $rpc_user = 'YOUR_USER';
 $rpc_pass = 'YOUR_KEY';
 $bitcoin = new Bitcoin($rpc_user, $rpc_pass, $rpc_host, $rpc_port);
 print_r($bitcoin->getinfo());
 print_r($bitcoin->listaccounts());
 print_r($bitcoin->listreceivedbyaddress(0, true));
?>

Hope this helps!

7146: <p>I'm able to connect to bitcoind using my command line and the process is running with the appropriate port but when I try to run it through XAMPP after using the JSON-RPC library (I used the PHP developer intro for the code) it's giving me the following error, and I don't know why: </p>

<pre><code>Warning:  fopen(): Failed to enable crypto in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 132

Warning:  fopen(https://...@127.0.0.1:8332/): failed to open stream: operation failed in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 132
Fatal error:  Uncaught exception 'Exception' with message 'Unable to connect to https://user:password
@127.0.0.1:8332/' in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php:140
Stack trace:
#0 /opt/lampp/htdocs/bitcoins/testServer.php(7): jsonRPCClient-&gt;__call('getinfo', Array)
#1 /opt/lampp/htdocs/bitcoins/testServer.php(7): jsonRPCClient-&gt;getinfo()
#2 {main}
  thrown in /opt/lampp/htdocs/bitcoins/jsonRPCClient.php on line 140
</code></pre>

<p>The code is the following: (we tried toggling between http and https and it's still not working) </p>

<pre><code>require_once 'jsonRPCClient.php';

$bitcoin = new jsonRPCClient('https://user:password@127.0.0.1:8332/');

echo "&lt;pre&gt;\n";
print_r($bitcoin-&gt;getinfo());
echo "&lt;/pre&gt;";
</code></pre>
 5651: <p>By default, bitcoind RPC goes over http, not https.
Unless of course you enabled SSL by generating an SSL key and setting the required config option...</p>

<pre><code> rpcssl=1
</code></pre>

<p>Otherwise, 
This line:</p>

<pre><code>$bitcoin = new jsonRPCClient('https://user:password@127.0.0.1:8332/');
</code></pre>

<p>Should be changed to:</p>

<pre><code>$bitcoin = new jsonRPCClient('http://user:password@127.0.0.1:8332/');
</code></pre>

<p>If that doesn't answer it let me know. There are a few other ways around it.</p>

<p>Welcome to the world of crystallographic currencies based on the satoshi client! </p>

<p>I think this little piece of info should be posted pretty inappropriately, it's hidden in documentation no one reads.</p>
 1691: <p>I resolved this problem by passing <code>-rpcthreads=16</code> even though the VPS server is a single core</p>
 30934: <p>As @Bittylicious mentioned the JSON-RPC is a little bit buggy</p>

<p><a href="https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#PHP" rel="nofollow">https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#PHP</a></p>

<p>Note: The jsonRPCClient library uses fopen() and will throw an exception saying "Unable to connect" if it receives a 404 or 500 error from bitcoind. This prevents you from being able to see error messages generated by bitcoind (as they are sent with status 404 or 500).</p>

<p>You have an option use <a href="https://github.com/aceat64/EasyBitcoin-PHP" rel="nofollow">EasyBitcoin</a> instead, that will throw more accurate error messages and its pretty much the same than JSON-RPC</p>

<pre><code>&lt;?php
 require_once 'YOUR_FOLDER/easybitcoin.php';
 $rpc_host = 'YOUR_IP';
 $rpc_port = 'YOUR_PORT';
 $rpc_user = 'YOUR_USER';
 $rpc_pass = 'YOUR_KEY';
 $bitcoin = new Bitcoin($rpc_user, $rpc_pass, $rpc_host, $rpc_port);
 print_r($bitcoin-&gt;getinfo());
 print_r($bitcoin-&gt;listaccounts());
 print_r($bitcoin-&gt;listreceivedbyaddress(0, true));
?&gt;
</code></pre>

<p>Hope this helps!</p>
