2014-02-13 75 views
0

我最近移动了服务器,并且长时间工作的PHP脚本不再有效。我已经将它追踪到一个包装类,我可以轻松地进行多卷曲操作。整个剧本的作品开始偶尔完成,但大部分时间都失败。curl_init间歇性返回NULL

然而,我的测试过程中我发现,当脚本未能在这里失败:

$ch = curl_init(); 

当脚本未能$ CH为NULL。文档(php.net)说它应该在成功时返回资源,在失败时返回FALSE不为NULL。

我正在使用Ubuntu 12.04服务器。正如我所说,这个剧本跑了很长时间。所以我认为有几件事发生了。首先,我的托管公司的图像应该是最新的安全补丁,等等。可能有一个PHP补丁,搞砸了什么?其次,在以前的机器上(或者我曾经用过的其他机器)没有遇到过资源问题。最后,我的托管公司安装的映像有问题。

如果任何人有任何这类错误的经验,我很乐意听到它。

更新:

$ch = curl_init(); 
echo '<br>Res: ' . var_dump($ch); 

返回:

Res: NULL 
+0

你确定它返回NULL吗?你如何印刷其价值?参见['curl_init()'静静地返回NULL](http://compgroups.net/comp.lang.php/curl_init-silently-returns-null/299307)。 TL; DR:使用'var_dump()',而不是'var_export()'。 –

+0

@JonathonReinhart谢谢,我正在使用var_export。我根据你的建议尝试了var_dump并更新了问题。它仍然使用var_dump返回NULL。 –

+0

我想你已经跳过了''ch = curl_init()''和''var_dump($ ch)''之间的代码。通常''ch''被设置为错误的cURL选项''null''。另外,你说你在做“多卷曲”操作。所有其他cURL手柄是否正确关闭?有足够的记忆吗? – ub3rst4r

回答

0

我也碰到过类似的问题,我的猜测是curl_init()在你的PHP服务器不可用,出于某种原因,我不知道。

请检查您的系统中是否启用了curl_init(),并且请在脚本的顶部设置error-reporting(E_ALL);以查看可能的错误。 就我而言,我收到一条警告,指出curl_init()由于安全原因而被禁用。