搜尋

首頁  >  問答  >  主體

如何正確檢查PHP是否正確配置以使用DOMDocument?

<p>我有一個使用DOMDocument的腳本。在某些環境中,它會失敗,可能是由於某個模組未載入。我想做的是為使用此腳本的用戶提供修復此問題的指導。 </p><p>以下是一個最小化的腳本,用於重現此問題:</p><p><br /></p> <pre class="brush:php;toolbar:false;"><?php echo 'start!'; try { $doc = new DOMDocument(); } catch (Exception $e) { echo 'catched'; } echo 'end'; ?></pre> <p>如果我在瀏覽器中開啟(由我的目前伺服器提供,涉及Nginx),我只能看到"start!"(回傳碼為500;如果我省略try..catch,輸出相同)。所以問題不僅在於檢測正確的模組是否已安裝(我應該使用extension_loaded('dom')來檢查嗎?),而且在於try..catch似乎不起作用(我在輸出中沒有被捕獲;在當前情況下,我使用的是PHP 7.4.3)。 <br /><br />您有關於如何正確處理這種情況的建議嗎? </p><p><br /></p>
P粉898049562P粉898049562486 天前501

全部回覆(2)我來回復

  • 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')來偵測擴充功能是否可用。

    回覆
    0
  • P粉546257913

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

    您可以使用class_exists()函數來測試類別是否存在。例如:


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

    回覆
    0
  • 取消回覆