Cette erreur a été rencontrée lors de la migration d'une application web fonctionnant normalement sous Apache/ PHP5 vers une version plus récente Apache/PHP7
Le message d'erreur obtenu:
Fatal error: Uncaught Error: Call to undefined function dl() in /srv/opencourrier/web/php/pear/DB.php:710
Malgré la modification de la configuration de l’hôte virtuel Apache, et l'activation explicite de l'usage de dl() et la désactivation de l'option safe_mode via les directives:
<IfModule php7_module>
# safe_mode n'est plus utilisé par PHP >= 5.4.0
php_admin_flag safe_mode Off
# pear utilise la fonction dl()
php_admin_flag enable_dl On
</IfModule>
L'appel de phpinfo() affiche bien enable_dl = On mais l'erreur persiste. La documentation PHP indique que dans de nombreuses SAPIs la fonction dl() a été retirée. C'est le cas pour la version PHP-FPM de PHP 7.0.0.
La fonction dl() n'est donc plus utilisable via le module Apache PHP7, il faut charger les modules via les directives de chargement d'extension ou utiliser la version CLI en exécutant les scripts via fastcgi.
Les solutions: