PHP 5.3+ enable_dl ne permettant pas dl()?

Je suis en train d'installer un 3ème partie PHP extension (.donc) en PHP 5.3.6-13 sur Ubuntu 11.10 et de l'utiliser dans un environnement web. La documentation du fournisseur suggère d'utiliser les dl() fonction pour charger dynamiquement la bibliothèque.

Quand j'essaie de leur code d'exemple, je trouve le dl() n'est pas disponible (Fatal error: call to undefined fonction dl ()) dl() fonction a été dépréciée en PHP 5.3. Mais il y a un enable_dl config règle en php.ini, et d'autres sources dire que je devrais être en mesure d'utiliser la fonction dl() simplement en modifiant le php.ini variables (enable_dl=On, safe_mode=Off, qui ne figurent pas dans disable_functions) et le redémarrage d'apache. Quand je l'ai essayer, dl() est toujours pas défini.

J'ai donc creuser dans la PHP 5.3 SAPI changement notes et de trouver ceci:

La fonction dl() est maintenant désactivé par défaut, et est maintenant disponible uniquement en vertu de la CLI, CGI, et d'intégrer SAPIs.

Est-ce à dire que dl() n'est pas seulement "désactivé par défaut" en PHP 5.3+ à l'aide d'un web SAPI, mais en fait "complètement indisponible peu importe ce que je fais, même avec la modification de config PHP options"? C'est ce qu'il me semble car je ne peux pas obtenir dl() de travail, peu importe ce que je tweak.

Pour clarifier: je peut modifier php.ini et charger l'extension directement, donc c'est pas une question sur comment faire pour obtenir l'extension de travailler, plutôt sur la fonction dl() et son état de PHP 5.3+. Si elle n'est plus disponible dans n'importe quelle circonstance je veux être en mesure de dire le vendeur, de sorte qu'ils peuvent mettre à jour leur documentation. Mais si elle doit être disponible et je suis juste en manque de quelque chose, j'aimerais vous entendre aussi.

Qui SAPI êtes-vous à l'aide de PHP? Module Apache?
apache2handler. J'ai mentionné le redémarrage d'apache mais je suppose que je n'ai jamais fait explicitement état que j'ai été en utilisant apache.
oh, et apache 2.2.20 si ça peut aider
Le chargement dynamique n'est pas disponible pour apache2handler plus longtemps. C'est pourquoi vous ne pouvez pas le faire fonctionner. Plus important que le serveur (et sa version) est en fait le type de module SAPI, ici vous êtes en utilisant le module apache pour PHP. Cela signifie que, PHP est exécuté à l'intérieur d'apache et non pas dans son propre processus comme avec (F)CGI ou dans l'interface de ligne. dl() a été désactivé pour des raisons de sécurité. Vous ne voulez pas d'avoir de nouveaux trucs chargé dans le cadre de votre serveur 😉 - Ou mieux 🙁 dans votre cas, parce que vous ne l'aurez pas à travailler. Howver que vous pouvez modifier le fichier ini, vous pouvez simplement charger l'extension
Grande - comment savez-vous cela? est-il de la documentation n'importe où? si vous faites une réponse avec une référence à quelque part il est dit que apache2handler ne prend pas en charge le chargement dynamique, je vais le marquer droite 🙂

OriginalL'auteur jonathanm | 2012-08-31