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>

1 ответ

Решение

Какую версию 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}";
}
Другие вопросы по тегам