php-fpm seems to not run PHP-curl, including curl_init() & curl_exec()

43 views
Skip to first unread message

Kurt Reimer

unread,
Jan 5, 2024, 6:45:47 PMJan 5
to highload-php-en
Hello,
    This php script (with the real URL & credentials put back in) runs successfully from the command-line. It uses php_curl to retrieve JSON-formatted data, converts the result to an associative array, and displays one of the entries and the length of the retrieved JSON data:

==========
#!/usr/bin/php
<?php
$url = "https://host.ext";
$user = "<user>";
$pass = "<pw>";

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $user.":".$pass);
curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
//curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));

$result = curl_exec($curl);
$resultlen = strlen($result);

curl_close($curl);

$r_ary = array();
$r_ary = json_decode( $result , true , 512 , JSON_OBJECT_AS_ARRAY );
$st = 'status';
$status = $r_ary[$st];

echo "<!doctype html>";
echo "<html>";
echo "<body>";
   echo "Length: $resultlen";
   echo "Status: $status";
echo "</body>";
echo "</html>";
?>
==========

But if I remove the first line, put the result in the same computer's  HTML document root and try to access via a web browser, it retrieves zero bytes. It seems the curl_exec() doesn't retrieve anything. I get the following in /var/log/php-fpm/www-error.log:

PHP Warning:  Trying to access array offset on value of type null in /var/www/html/test.php on line 25

I'm running Centos stream 9, with apache2.4 configured for php-fpm. The command-line PHP is 8.0.30.

Any help would be much appreciated.

Yours,

Kurt Reimer

Reply all
Reply to author
Forward
0 new messages