cURL 不适用于 RightNow/Oracle Service Cloud 客户门户

cURL not working on RightNow/Oracle Service Cloud customer portal

我有一个小的 php 脚本,我用它来测试 cURL 是否已安装和运行。这适用于我们的 Oracle 服务云沙箱环境 (websitename.rightnowdemo.com),它在页面顶部和下方显示 google.com,它打印测试函数的结果 ("cURL is installed on this server")。但是,我们的开发 (websitename.custhelp.com) 环境中的相同代码不起作用。它只打印 "cURL is installed" 消息,仅此而已。在我们的新环境中是否需要设置配置设置?我怎样才能使 cURL 充分发挥作用?

代码:

<rn:meta title="cURL Example" template="agent.php" clickstream=""/>

<?php
load_curl();
$curlURL = "www.google.com";
$ch = curl_init($curlURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
$result = curl_exec($ch);
echo $result;
curl_close($ch);

?>

<html>
<head></head>
<body>
<?php

// Script to test if the CURL extension is installed on this server

// Define function to test
function _is_curl_installed() {
    if  (in_array  ('curl', get_loaded_extensions())) {
        return true;
    }
    else {
        return false;
    }
}

// Ouput text to user based on test
if (_is_curl_installed()) {
  echo "cURL is <span style=\"color:#4fa361;\">installed</span> on this server";
} else {
  echo "cURL is <span style=\"color:#dc4f49\">not installed</span> on this server";
}


?>
</body>
</html>

您在生产中使用的是哪个版本的 OSvC (*.custhelp.com)?您的演示环境和​​生产环境之间的版本很可能不同。由于 rightnowdemo 环境与您的站点不同步,因此最好在克隆您的产品的真实测试站点上进行开发。请在此处包含您的生产 OSvC 版本,因为您可能需要使用旧的 dl() 方法将 curl 加载到您的脚本中。

另一个问题可能是您试图在视图文件中实现 load_curl() 方法,这通常不是一个好主意。您应该从控制器或模型中执行此操作。您可能 运行 遇到了 CP3 中引入的命名空间问题,其中强制命名空间。在根命名空间而不是您的 CP 命名空间中检查 curl_init

if (!function_exists("\curl_init"))
{
    \load_curl();
}

综上所述,如果您收到安装了 curl 的消息,那么它应该正在正确加载 curl。 google.com 很可能出于多种原因拒绝使用 curl 的生产服务器的请求。您可以使用以下方法检查卷曲错误:

if($errno = curl_errno($ch)) {
    $error_message = curl_strerror($errno);
    echo "cURL error ({$errno}):\n {$error_message}";
}