Comment vérifier correctement si PHP est correctement configuré pour utiliser DOMDocument ?
P粉898049562
P粉898049562 2023-07-30 17:50:54
0
2
496
<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>
P粉898049562
P粉898049562

répondre à tous(2)
P粉973899567

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 :


try
{
    new DOMDocument();
}
catch(Error $e)
{
    echo 'DOMDocument not available';
}

ou :

try
{
    new DOMDocument();
}
catch(Throwable $t)
{
    echo 'DOMDocument not available';
}

Bien sûr, vous pouvez directement utiliser extension_loaded('dom') pour détecter si l'extension est disponible.

P粉546257913

Vous pouvez utiliser la fonction class_exists() pour tester si une classe existe. Par exemple :


if (!class_exists('DOMDocument')){
   echo "Please install DOMDocument";
   exit;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal