Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich richtig überprüfen, ob PHP für die Verwendung von DOMDocument richtig konfiguriert ist?

<p>Ich habe ein Skript, das DOMDocument verwendet. In manchen Umgebungen schlägt es fehl, möglicherweise weil ein Modul nicht geladen ist. Ich möchte Benutzern dieses Skripts eine Anleitung zur Behebung dieses Problems geben. </p><p>Hier ist ein minimales Skript, um das Problem zu reproduzieren: </p><p><br /></p> <pre class="brush:php;toolbar:false;"><?php echo 'start!'; versuchen { $doc = new DOMDocument(); } Catch (Ausnahme $e) { Echo 'gefangen'; } echo 'Ende'; ?></pre> <p> Wenn ich es in einem Browser öffne (der von meinem aktuellen Server mit Nginx bereitgestellt wird), sehe ich nur „start!“ (Rückgabecode 500; wenn ich try..catch weglasse, ist die Ausgabe dieselbe). Das Problem besteht also nicht nur darin, festzustellen, ob das richtige Modul installiert ist (sollte ich extension_loaded('dom') verwenden, um dies zu überprüfen?), sondern auch darin, dass try..catch nicht zu funktionieren scheint (ich bleibe dabei nicht hängen Ausgabe; im aktuellen Fall verwende ich PHP 7.4.3). <br /><br />Haben Sie Vorschläge, wie Sie mit dieser Situation richtig umgehen können? </p><p><br /></p>
P粉898049562P粉898049562420 Tage vor434

Antworte allen(2)Ich werde antworten

  • P粉973899567

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

    当找不到一个类时,会引发一个错误。该类没有继承Exception,所以您的代码无法捕获它。

    以下代码可以解决这个问题:


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

    或者:

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

    当然,您可以直接使用extension_loaded('dom')来检测扩展是否可用。

    Antwort
    0
  • P粉546257913

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

    您可以使用class_exists()函数来测试类是否存在。例如:


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

    Antwort
    0
  • StornierenAntwort