0

cURL がインストールされ、機能しているかどうかをテストするために使用している小さな php スクリプトがあります。これは、Oracle Service Cloud サンドボックス環境 (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

本番環境 (*.custhelp.com) で使用している OSvC のバージョンは何ですか? 多くの場合、デモ環境と本番環境でバージョンが異なります。rightnowdemo 環境はサイトと同期していないため、本番環境のクローンである真のテスト サイトで開発することをお勧めします。dl()以前の方法を使用して curl をスクリプトにロードする必要がある場合があるため、ここに本番 OSvC バージョンを含めてください。

もう 1 つの問題は、ビュー ファイルに load_curl() メソッドを実装しようとしている可能性がありますが、これは一般的に悪い考えです。コントローラーまたはモデルからそれを行う必要があります。名前空間が強制される CP3 で導入された名前空間の問題が発生している可能性があります。curl_initCP 名前空間ではなく、ルート名前空間で確認してください。

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 に答える