cURL не работает на портале для клиентов RightNow / Oracle Service Cloud

У меня есть небольшой скрипт php, который я использую, чтобы проверить, установлен ли и работает ли cURL. Это работает в нашей среде песочницы Oracle Service Cloud (websitename.rightnowdemo.com), оно отображает google.com в верхней части страницы и ниже, печатает результат функции теста («cURL установлен на этом сервере») , Однако тот же код в нашей среде dev (websitename.custhelp.com) не работает. Он только печатает сообщение «cURL isлито», и это все. Есть ли параметр конфигурации, который необходимо установить в нашей новой среде? Как я могу получить 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

Решение

Какую версию 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}";
}
2

Другие решения

Других решений пока нет …