Synology NAS – foutmelding – curl_init()

We hebben laatst vreemde foutmeldingen gehad op de Synology met het uitvoeren van PHP CRONJOBS die gebruik maken van CURL:

Fatal error: Call to undefined function curl_init()

Het vreemde is dat CURL zowel bij PHP 5.6 als bij PHP 7.0 aanstaat:

Webstation instelling:


Het probleem

Dat er geen php executable staat in:  /usr/bin/php

maar in:

PHP 5.6:  /usr/local/bin/php56

PHP 7.0:  /usr/local/bin/php70

Instellingen hier boven worden toegepast in:  /usr/local/etc/php56/php.ini

en:  /usr/local/etc/php70/php.ini

en niet in:  /etc/php/php.ini

Is curl geladen?

Ja wellicht voor de webserver wel en staan er vast symlinks of instellingen ergensop de achtergrond, maar voor de commandline is curl dan toch niet geladen omdat de verkeerde ini wordt uitgelezen, men kan dat checken door het volgende commando:

php56 -r "phpinfo();" | grep curl

test van curl, als dit commando geen foutmeldingen geeft:

/usr/local/bin/php56 -r "curl_init()"

probeer maar eens:

/usr/local/bin/php56 --php-ini /etc/php/php.ini -r "curl_init()"

Wil je dan een cron script uitvoeren

De oplossing is dat je het specifieke INI bestand opgeeft voor een opgegeven php versie:

/usr/local/bin/php56 --php-ini /etc/php/php.ini /locatie/script.php


OVERIGE INFO

Welke PHP?

In een putty sessie kan men met dit commando kijken welke versie van PHP aangeroepen wordt:

php -v

En waar de binary staat dmv grep en kijk dan bij  _SERVER[“_”]

php -i | grep /php

in dit geval /bin/php

Welke INI?

Om te kijken welke INI (instellingen) er geladen wordt bij het aanroepen van PHP:

/bin/php --ini

Specifiek php 5.6:

Specifiek php 7.0: