Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
curl_exec未将Veeva Vault集成到CakePHP中_Php_Cakephp_Curl - Fatal编程技术网

curl_exec未将Veeva Vault集成到CakePHP中

curl_exec未将Veeva Vault集成到CakePHP中,php,cakephp,curl,Php,Cakephp,Curl,我有一个用CakePHP编写的网站,需要从Veeva Vault下载文件。我从其他人那里继承了这个身份验证函数,该函数应该从Veeva返回会话id,但在curl_exec()上它应该返回true时返回false。我被告知该函数使用CakePHP之外的测试文件,所以我认为它与蛋糕有关 private function Auth() { try { $url = self::VVURL . '/auth?username=' . self::VVUSERNAME . '&p

我有一个用CakePHP编写的网站,需要从Veeva Vault下载文件。我从其他人那里继承了这个身份验证函数,该函数应该从Veeva返回会话id,但在curl_exec()上它应该返回true时返回false。我被告知该函数使用CakePHP之外的测试文件,所以我认为它与蛋糕有关

private function Auth()
{
    try {

    $url = self::VVURL . '/auth?username=' . self::VVUSERNAME . '&password=' . self::VVPASS;

    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json;charset=UTF-8"));
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, null);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

    $json_response = curl_exec($curl);

    if ($json_response != true) {
        throw new Exception (curl_error($curl), curl_errno($curl));
    }
    $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

    if($status != 200)
    {
      die('Error:  call to URL $url failed with status "' . $status .'", response "' . $json_response. '", curl_error "' . curl_error($curl) . '", curl_errno "'  . curl_errno($curl). '"');
    }
    else 
    {
      //Enable following line to DEBUG
      //print_r($json_response);
    }

    curl_close($curl);

    $return = json_decode($json_response);
    foreach($return as $k => $v)
    {
      if($k == 'sessionId')
        $this->sessID = $v;
    }

    return $this->sessID;

    }
    catch(Exception $e){
        trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);
    }
}
curl\u init($url)返回资源(148,curl)。我不知道这是否正确

curl\u getinfo($curl,CURLINFO\u HTTP\u代码)返回200,所以我知道这很好

curl_exec($curl)返回false

捕获物返回:

致命错误 错误:Curl失败,错误为#56:分块编码数据中的问题(2)
文件:C:\wamp\www\content\app\Vendor\veeva\veeva.php
电话:109 注意:如果要自定义此错误消息,请创建app\View\Errors\fatal\u error.ctp

不幸的是,我似乎找不到任何有用的Veeva文档


解决方案

在运行curl_exec()之前,我需要添加以下curl选项

这返回了一个正确的json响应。虽然无法直接输入json_decode(),但必须进行编辑:

$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));
$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));

解决方案

在运行curl_exec()之前,我需要添加以下curl选项

这返回了一个正确的json响应。虽然无法直接输入json_decode(),但必须进行编辑:

$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));
$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));

解决方案

在运行curl_exec()之前,我需要添加以下curl选项

这返回了一个正确的json响应。虽然无法直接输入json_decode(),但必须进行编辑:

$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));
$json_utf8 = utf8_decode($json_response);
$return = json_decode(str_replace("?", "", $json_utf8));

问题:函数curl\u exec可能已禁用。怎么办?解决方案:为了消除此错误消息,您需要执行以下操作之一:从php.ini*文件的disable_函数中删除curl_exec字符串如果您无法访问允许运行curl_exec的php.ini*文件更改宿主提供程序,请您的宿主提供程序删除上面的字符串function.PROBLEM:函数curl\u exec可能已禁用。怎么办?解决方案:为了消除此错误消息,您需要执行以下操作之一:从php.ini*文件的disable_函数中删除curl_exec字符串。如果您无法访问允许运行curl_exec函数的php.ini*文件更改宿主提供程序,请您的宿主提供程序删除上面的字符串。