2011-05-03 97 views
3

这是警告。检测cURL是否有效?

警告:curl_setopt_array() [function.curl-SETOPT阵列]: CURLOPT_FOLLOWLOCATION不能被激活在safe_mode设置时 或 的open_basedir在/.../file.php 设置在线41上

这是我用来检测cURL的。如果未启用cURL,则会触发解决办法。

function curlEnabled() { 
    if (ini_get('safe_mode') == 1) 
     return 0; 

    return in_array('curl', get_loaded_extensions()); 
} 

我发现很难测试这个功能,有效地做到缺乏启用安全模式或卷曲残疾人托管。

有人可以告诉我。

  1. 该函数是否实际检测到PHP safe_mode?
  2. 它检测cURL是否正确加载?

最后,如何改进这个函数来捕捉'无法激活'错误并返回0?

回答

6

这似乎与safe_mode正常工作。

要检查卷曲,你可以看它在加载扩展(像你一样),或者干脆:

function_exists('curl_init'); 

至于错误信息,我不知道你在做什么问。你想压制错误信息吗?

你可以这样做:

$old=error_reporting(0); // turn off error reporting 
// do whatever that causes errors 
error_reporting($old); // turn it back on 
+0

为了澄清,警告意味着,curlEnabled函数返回1和卷曲代码已运行 - 即使显然主机有运行它的麻烦。我想要做的就是能够检测是什么引起这个警告,以及cURL是否实际工作,而不会产生错误或警告。我不介意使用错误抑制。这是我遇到麻烦的考验。 – 2011-05-03 08:06:24

+0

@John Paul - 由于它是一个警告,代码应该继续运行,因此您应该能够成功运行测试。 – Christian 2011-05-03 10:11:18