如何正确检查PHP是否正确配置以使用DOMDocument?
P粉898049562
P粉898049562 2023-07-30 17:50:54
0
2
511
<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粉898049562
P粉898049562

全部回复(2)
P粉973899567

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

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


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

或者:

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

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

P粉546257913

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


if (!class_exists('DOMDocument')){
   echo "Please install DOMDocument";
   exit;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板