Outils pour utilisateurs

Outils du site


dev:php:erreurs:undefined-function-dl

Php7: Fonction dl() indéfinie

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:

  • Charger l'extension dans le fichier php.ini et supprimer l'appel de dl() dans le code.
  • Utiliser une des SAPI's mentionnée dans la documentation autorisant encore la fonction dl(): comme CLI, CGI ou Embed)
  • Downgrader PHP si le chargement dynamique est nécessaire.

Références

dev/php/erreurs/undefined-function-dl.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1