如何正确检查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()函数来测试类是否存在。例如: