如何正確檢查PHP是否正確配置以使用DOMDocument?
P粉898049562
2023-07-30 17:50:54
<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>
當找不到一個類別時,會引發一個錯誤。該類別沒有繼承Exception,所以您的程式碼無法捕獲它。
以下程式碼可以解決這個問題:
#或:
當然,您可以直接使用extension_loaded('dom')來偵測擴充功能是否可用。
您可以使用class_exists()函數來測試類別是否存在。例如: