I'm having a server issue. I'm running a local server (for developing) and I've changed my local server from MAMP to XAMPP. However, on XAMPP, the cURL option CURLOPT_TIMEOUT_MS
or CURLOPT_CONNECTTIMEOUT_MS
gives me the next error:
Warning: curl_setopt() expects parameter 2 to be long, string given
Is this because of the PHP or cURL version? Maybe a configuration setting?
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);
Additional information:
- OSX 10.6.8
- PHP 5.3.1
- cURL 7.19.7
Thanks in advance.
Edit: There seems to be some confusion about the error and the variable to set. The error states that parameter 2 is invalid. Not parameter 3 . So the CURLOPT_CONNECTTIMEOUT_MS
seems to be the issue.
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);
^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
parameter: #1 #2 #3
Fun fact: var_dump(CURLOPT_CONNECTTIMEOUT_MS);
displays string(25) "CURLOPT_CONNECTTIMEOUT_MS"
. Just like the error states, it's a string instead of a float.
For some reason, CURLOPT_CONNECTTIMEOUT_MS is defined incorrectly in your version of PHP. I'd check with whatever distribution of PHP you're using and find out whether it's a general bug.
ReplyDeleteThe correct value is 156: you should be able to use this instead:
curl_setopt($this->ch, /*CURLOPT_CONNECTTIMEOUT_MS */ 156, 2500);
NB that you really really really need to add comments explaining why you're doing this.
After reading your comments, I am sure PHP should also have raised the following warning:
ReplyDeleteNotice: Use of undefined constant CURLOPT_CONNECTTIMEOUT_MS - assumed
'CURLOPT_CONNECTTIMEOUT_MS'
After looking at curl_setopt() manual, I noticed this sidenote:
CURLOPT_CONNECTTIMEOUT_MS: Added in cURL 7.16.2. Available since PHP
5.2.3.
So make sure the above assertion is true (look at output of phpinfo() to determine PHP and cURL version). Alternately, use CURLOPT_CONNECTTIMEOUT if the millisecond resolution is not really necessary.