Comment vérifier correctement si PHP est correctement configuré pour utiliser DOMDocument ?
P粉898049562
2023-07-30 17:50:54
<p>J'ai un script qui utilise DOMDocument. Dans certains environnements, cela échoue, peut-être parce qu'un module n'est pas chargé. Ce que je veux faire, c'est fournir des conseils sur la résolution de ce problème aux utilisateurs de ce script. </p><p>Voici un script minimal pour reproduire le problème : </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><?php
echo 'démarrez !';
essayer {
$doc = nouveau DOMDocument();
} catch (Exception $e) {
echo « attrapé » ;
}
echo 'fin';
?>≪/pré>
<p> Si je l'ouvre dans un navigateur (servi par mon serveur actuel, impliquant Nginx), je ne vois que "start!" (code retour 500 ; si j'omets try..catch, le résultat est le même). Le problème n'est donc pas seulement de détecter si le bon module est installé (dois-je utiliser extension_loaded('dom') pour vérifier ?), mais aussi que try..catch ne semble pas fonctionner (je ne me laisse pas prendre dans le sortie ; dans le cas actuel, j'utilise PHP 7.4.3). <br /><br />Avez-vous des suggestions sur la manière de gérer correctement cette situation ? </p><p><br /></p>
Lorsqu'une classe n'est pas trouvée, une erreur est générée. Cette classe n'hérite pas d'Exception, votre code ne peut donc pas l'attraper.
Le code suivant peut résoudre ce problème :
ou :
Bien sûr, vous pouvez directement utiliser extension_loaded('dom') pour détecter si l'extension est disponible.
Vous pouvez utiliser la fonction class_exists() pour tester si une classe existe. Par exemple :