[追記]
1.の方は解決しました。sslのバージョンを明記する必要があったみたいです。
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);

php上でJsonRPCを送るために以下、curl関数を利用する方法と、外部のライブラリを利用する方法を行いましたが、尽く失敗しています。何故こんなにも難しいのでしょうか。

以下2.の方は、ライブラリ自体に不具合があるように思えてなりません。
そのためcurl関数での方法を教えて頂きたいです。

  1. コマンドで正常な動作を確認した後、phpのcurl関数を利用してJsonRPC送信を試みましたが、失敗しました。以下実際のコードです。

    function call_curl( $url, $param )
    {
        $ch = curl_init();
    
        if( isset( $url ) ) curl_setopt( $ch, CURLOPT_URL, $url );
        if( isset( $param ) )
        {
            $content = json_encode( $param );
            curl_setopt( $ch, CURLOPT_POST, true );
            curl_setopt( $ch, CURLOPT_POSTFIELDS, $content );
            curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: x-www-form-urlencoded') );
            //curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json') );
            //curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type' => 'application/json' ) );
        }
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    
        $result = curl_exec( $ch );
        $info = curl_getinfo( $ch );
        var_dump( $info );
        echo nl2br("\n");
        var_dump( $result );
        curl_close( $ch );
    }
    
    $url = "https://ropsten.infura.io/...";
    $param[ 'jsonrpc' ] = '2.0';
    $param[ 'method' ] = 'eth_blockNumber';
    $param[ 'params' ] = '';
    $param[ 'id' ] = '1';
    call_curl( $url, $param );
    
  2. その後、githubのライブラリを利用して通信を試みました。結果は以下の通りです。
    executeの第二引数に連想配列を渡すとエラーになってしまいます。
    連想配列じゃない場合、例えばパラメータ一つのみの場合は正常に動作し、期待通りの結果が返ります。

    $client = new Client( $url );
    $client->getHttpClient()->withDebug();
    
    $result = $client->execute('eth_getTransactionByHash', ['0x...'] );
    
    var_dump( $result );// 成功
    unset( $result );
    
    echo nl2br("\n");
    echo nl2br("\n");
    echo nl2br("\n");
    
    $result = $client->execute('eth_call', ['from' => $owner_address, 'to' => $contract_address, 'data' => $encoded_sig] );
    
    var_dump( $result );// エラー
    unset( $result );
    

以下エラー内容です
1のエラー
bool(false) Error:SSL connect error

2のエラー
Fatal error: Uncaught JsonRPC\Exception\InvalidJsonFormatException: Malformed payload in /var/www/test_project/blockchain/JsonRpc/fguillot/json-rpc/src/JsonRPC/Validator/JsonFormatValidator.php:27 Stack trace: #0 /var/www/test_project/blockchain/JsonRpc/fguillot/json-rpc/src/JsonRPC/Response/ResponseParser.php(86): JsonRPC\Validator\JsonFormatValidator::validate(NULL) #1 /var/www/test_project/blockchain/JsonRpc/fguillot/json-rpc/src/JsonRPC/Client.php(196): JsonRPC\Response\ResponseParser->parse() #2 /var/www/test_project/blockchain/JsonRpc/fguillot/json-rpc/src/JsonRPC/Client.php(179): JsonRPC\Client->sendPayload('{"jsonrpc":"2.0...', Array) #3 /var/www/test_project/blockchain/JsonRpcTest.php(39): JsonRPC\Client->execute('eth_call', Array) #4 {main} thrown in /var/www/test_project/blockchain/JsonRpc/fguillot/json-rpc/src/JsonRPC/Validator/JsonFormatValidator.php on line 27

SSL Version => NSS/3.27.1