0

我有一个小的 php 脚本,用于测试 cURL 是否已安装并正常运行。这适用于我们的 Oracle 服务云沙箱环境 (websitename.rightnowdemo.com),它在页面顶部和下方显示 google.com,它打印测试功能的结果(“cURL 已安装在此服务器上”) . 但是,我们的开发 (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>
4

1 回答 1

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 拒绝来自生产服务器的请求。您可以使用以下命令检查 curl 错误:

if($errno = curl_errno($ch)) {
    $error_message = curl_strerror($errno);
    echo "cURL error ({$errno}):\n {$error_message}";
}
于 2015-11-10T16:50:08.893 回答