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.
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'extensionGrande - 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
Vous devez vous connecter pour publier un commentaire.
Donc, si vous avez le paramètre ini
enable_dl
ensemble deon
et il ne fonctionne toujours pas, alors il est désactivé dans le SAPI vous utilisez.Si vous vous demandez qui SAPIs sont destinés, les modifications sur la même page est plus détaillé:
Vous n'êtes pas en utilisant l'un de ces deux. Au lieu d'utiliser l' Extension De Chargement Directives et vous êtes fine.
Si elle est désactivée sur le moteur PHP de niveau, il se sent que vous aimez être complètement indisponible. En fait, la fonctionnalité est encore en votre php, mais vraiment désactivé (sur le moteur de niveau), il n'est pas destiné qu'il y a un fichier de configuration, vous pouvez ré-activer. Si seulement un libellé problème, parfois il n'est pas facile de décrire la technique cicumstances clair pour tout le monde, c'est pourquoi nous demandons 😉
Quel genre de SAPI "Intégrer"?
Pour l'incorporation de PHP, par exemple en tant que moteur de script dans vos propres binaires je pense.
Non, il est très probable que les docs sont en train de parler à propos d'un SAPI appelé "Embed".
OriginalL'auteur hakre