2010-08-04 158 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