我有一个小的PHP脚本,我用来测试cURL是否已安装并正常运行。这适用于我们的Oracle Service Cloud沙箱环境(websitename.rightnowdemo.com),它在页面顶部和下方显示google.com,它打印测试功能的结果(" cURL安装在此服务器&#34)。但是,我们的dev(websitename.custhelp.com)环境中的相同代码不起作用。它只打印" cURL已安装"消息就是这样。是否需要在我们的新环境中设置配置设置?我怎样才能使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>
答案 0 :(得分:2)
您在生产中使用的是什么版本的OSvC(* .custhelp.com)?您的演示和生产环境之间的版本很可能不同。由于rightnowdemo环境与您的站点不同步,因此最好在真正的测试站点上进行开发,该站点是您生产的克隆。请在此处包含您的生产OSvC版本,因为您可能需要使用较旧的dl()
方法将curl加载到您的脚本中。
另一个问题可能是您尝试在视图文件中实现load_curl()方法,这通常是一个坏主意。你应该从控制器或模型中做到这一点。您可能遇到CP3中引入的命名空间问题,其中强制执行命名空间。检查根命名空间的curl_init
而不是CP命名空间。
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}";
}