Maison  >  Questions et réponses  >  le corps du texte

Comment vérifier correctement si PHP est correctement configuré pour utiliser DOMDocument ?

<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粉898049562P粉898049562420 Il y a quelques jours433

répondre à tous(2)je répondrai

  • P粉973899567

    P粉9738995672023-07-31 16:50:19

    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.

    répondre
    0
  • P粉546257913

    P粉5462579132023-07-31 16:03:24

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


    if (!class_exists('DOMDocument')){
       echo "Please install DOMDocument";
       exit;
    }

    répondre
    0
  • Annulerrépondre