Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP CURL returns nothing

function ParseUrl($URL) {     $crl = curl_init();     curl_setopt ($crl, CURLOPT_URL, $URL);     curl_setopt ($crl, CURLOPT_PORT, 8086);     curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass");     curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);     curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5);     $ret = curl_exec($crl);     curl_close($crl);     return $ret; }  echo ParseUrl('http://xxx.me/serverinfo'); 

The code above simply returns nothing. The page I am trying to get with curl uses http authentication thing.

Am I missing something simple or what?

like image 266
jM2.me Avatar asked Jun 12 '11 21:06

jM2.me


People also ask

Why cURL is not working?

cURL is supported by your hosting company/plan but not enabled: If cURL is supported by you hosting company but it is not enabled by default, then often you simply just need to login to your hosting dashboard, navigate to the relevant section and enable it. Done!

What does curl_ exec return PHP?

Returns true on success or false on failure. However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, false on failure. This function may return Boolean false , but may also return a non-Boolean value which evaluates to false .

What does CURLOPT_ RETURNTRANSFER do?

CURLOPT_RETURNTRANSFER: Converts output to a string rather than directly to the screen.


1 Answers

Start out by doing this and see what you get, and after that it would be pretty obvious what the problem is:

Check if there was an error with the request after curl_exec:

if(curl_errno($ch)){     echo 'Curl error: ' . curl_error($ch); } 

That will provide you with enough info to know if there was a error with the request. If there was no error, you can check the request sent after curl_exec so you can double check that everything sent is in place:

print_r(curl_getinfo($ch)); 

Edit: After comments this is what you are looking for what is missing:

You need to set the option CURLOPT_HTTPAUTH.

Quote from php.net on the subject:

The HTTP authentication method(s) to use. The options are: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, and CURLAUTH_ANYSAFE.

The bitwise | (or) operator can be used to combine more than one method. If this is done, cURL will poll the server to see what methods it supports and pick the best one.

CURLAUTH_ANY is an alias for CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE is an alias for CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

like image 55
rzetterberg Avatar answered Sep 29 '22 16:09

rzetterberg