2010-08-04 117 views
0

以下是用于验证PayPal付款的脚本的一部分。找不到错误

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, 'https://' . $server . '/cgi-bin/webscr'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


$result = curl_exec($ch); 

curl_error($ch); 

curl_close($ch); 

在极少数情况下,curl_exec会导致脚本在该行停止执行。

没有错误记录在cpanel错误日志中,并尝试了许多不同的事情后,我不清楚什么可能导致此错误与卷曲。

我对卷曲不是很熟悉,所以如果有人知道从这里获取错误信息的好方法,或者可能导致这个问题的原因,我会非常感激。

谢谢

+0

您是否尝试使用其他服务器,或者未使用HTTPS? – kiamlaluno 2010-08-04 08:29:07

+2

您能否在下次提供更具体的标题? – msteiger 2010-08-04 08:29:52

+0

你有什么错误? Apache日志? – Kami 2010-08-04 08:32:03

回答

0

这可能需要很长时间。

curl_setopt($ch, CURLOPT_TIMEOUT, 30); 

设置时间长达30秒。你确定你等了那么久吗?

使用CURLOPT_TIMEOUT_MS来设置以毫秒为单位的超时。

+0

在过去,我将超时设置为0(以及set_time_limit(0)),但错误仍然存​​在。但我认为,如果这是一个超时错误,它应该在超过时间限制后抛出。我在日志中看到没有错误。 – dontaskagain 2010-08-04 08:43:04

0

curl_error()返回一个字符串,它不会自己做任何输出/日志记录。检测卷曲错误的正确方法如下:

$result = curl_exec($curl); 

if ($result === FALSE) { 
    error_log("CURL failed at " . date('c')); 
    error_log("CURL message: " . curl_error($curl)); 
} 
+0

该脚本不会处理过去的curl_exec。我尝试过类似于你的建议,但不幸的是我永远不会看到它的输出。 – dontaskagain 2010-08-04 11:58:55