0

我在 php https://github.com/crocodoc/crocodoc-php中使用鳄鱼

我在本地下载了文件我有我的 API TOKEN,所以我将它粘贴到那里,但它似乎不起作用,并且对于所有 15 个示例都抛出如下所示的错误

有人能帮我一下吗

这是我在使用上面的 github 代码和我的令牌时遇到的错误

Example #1 - Upload Form W4 from the IRS by URL.
  Uploading... failed :(
  Error Code: curl_exception
  Error Message: Crocodoc: [curl_exception] Crocodoc::_request

{"curl_errno":60,"curl_error":"SSL certificate problem, verify that the CA cert is OK. Details:\nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"}



Example #15 - Delete the second file we uploaded.
  Deleting... failed :(
  Error Code: curl_exception
  Error Message: Crocodoc: [curl_exception] Crocodoc::_request

{"curl_errno":60,"curl_error":"SSL certificate problem, verify that the CA cert is OK. Details:\nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"}

为了检查我是否正确使用了鳄鱼 API,我编写了自己的代码

这是我在自己的代码中遇到的错误

::::OUTPUT::::
{"uuid": "300dc39d-e82b-4d92-a701-b1f376600b96"}
checking status of : {"uuid": "300dc39d-e82b-4d92-a701-b1f376600b96"}

Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Curl error no: 60
out put for docurlGet is : 
bool(false) status is : 
Viewing the Document : {"uuid": "300dc39d-e82b-4d92-a701-b1f376600b96"}

这是我的代码(如果我不想粘贴整个代码但无法理解整个问题,我很抱歉,所以我只是给出整个代码)

<?php

$myToken='gSqV0PpEZhvJfLxQTcuMmoty';
$frameUrl='https://crocodoc.com/api/v2/document/upload';
 $api_url = 'https://crocodoc.com/api/v2/';
//curl "https://crocodoc.com/api/v2/document/upload" --data "token=${API_TOKEN}&url=http://web.crocodoc.com/files/test-simple.pdf"
$param='token='.$myToken.'&url=http://web.crocodoc.com/files/test-simple.pdf';

 //curl command 

    $ch = curl_init(); 
                @curl_setopt($ch, CURLOPT_HEADER, 0);
                @curl_setopt($ch, CURLOPT_HTTPHEADER,  array('Accept: application/json', 'X-HTTP-Method-Override: POST'));
                @curl_setopt($ch, CURLOPT_POST, 1);
                @curl_setopt($ch, CURLOPT_URL, $frameUrl);   
                @curl_setopt($ch, CURLOPT_POSTFIELDS,$param);

                @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
                curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
                $uuids = curl_exec($ch);
 echo $uuids;
 echo "<br>";
 echo " checking status of : ", $uuids."<br>";
$status =getStatus($uuids,$api_url,$myToken);
//curl 'https://crocodoc.com/api/v2/document/status?token=F6JOdArWGKmDRlfPQcZna71x&uuids=d5ea0542-baaf-46a1-835c-685a86e70e14'
echo " status is : ", $status."<br>";


echo " Viewing the Document  : ", $uuids."<br>";

function getStatus($uuids,$api_url,$myToken){


            $isSingleUuid = is_string($uuids);

                $obj  = json_decode($uuids);
                $my_uuid= $obj->uuid;

                $url = $api_url.'document/status';

        $token = $myToken;

        $dataStr = '?token='.$token.'&uuids='.$my_uuid;

        $output = my_doCurlGet($url, $dataStr);
               var_dump($output); 
        return $output;


}




        function my_doCurlGet($url, $dataStr) {
        //var_dump($url.$dataStr);
        //  var_dump($dataStr);exit;

        //
        $ch1 = curl_init();

        @curl_setopt($ch1, CURLOPT_HEADER, 0);
        @curl_setopt($ch1, CURLOPT_HTTPHEADER,  array('Accept: application/json', 'X-HTTP-Method-Override: POST'));
        @curl_setopt($ch1, CURLOPT_POST, 1);
        @curl_setopt($ch1, CURLOPT_URL, $url.$dataStr);
        @curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch1);

        if(curl_exec($ch1) === false)
        {
        echo "<br>".'Curl error: ' . curl_error($ch1);
        }
        else
        {
        echo "<br>".'Operation completed without any errors'."<br>";
        }
        //var err_no=curl_errno()
        if(curl_errno($ch1))
        {
        echo "<br>".'Curl error: ' . curl_error($ch1);
        echo "<br>".'Curl error no: ' . curl_errno($ch1);
        }


        echo "<br>". "out put for docurlGet is : $output"."<br>";


        return $output;
        }


  if (curl_errno($ch)) {    
    print 'An curl error has occurred.';
 exit;
  }
  //var_dump($uuids);
  curl_close($ch);        
  return $uuids;
?> 

感谢你的帮助

4

2 回答 2

0

Curl 可能没有正确配置 CA 包,或者配置的 CA 包不包含 Crocodoc 的 CA 证书。

查看此答案以获取更多信息。

于 2013-05-22T17:00:06.970 回答
0

找到了答案

首先,我确实为开始启用了 curl 和 SSL,但它不起作用

我什至将我的本地主机名称更改为 myHost 但它仍然不起作用

所以我对从 crocodoc api 库下载的 crocodoc.php 文件进行了一些更改

鳄鱼 PHP 库

我添加了这些行并且它工作了:):):) 谢谢大家,希望这对其他人也有帮助。

if(($_SERVER['SERVER_NAME'] == 'myHost') && ($_SERVER['SERVER_ADDR'] == '127.0.0.1') && ($_SERVER['HTTP_HOST'] == 'myHost')) {
            $options[CURLOPT_SSL_VERIFYPEER]=false;
        }
于 2013-09-06T06:05:17.370 回答