我在VMware播放器下的CentOS下的localhost上安装了Symfony。 (Windows 7,32位) 我的PHP版本是5.3.3。 CentOS是6.5。 VMware播放器是6.0.1。
当我尝试与localhost/Symfony/web/app_dev.php
连接时,我收到以下错误
ClassNotFoundException:尝试从中加载类“DOMDocument” 全局命名空间 /var/www/html/Symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php 第47行。
您是否忘记了此课程的使用声明?
第47行是
$dom = new \DOMDocument();
当我grep“DOMDocument”时,我获得了102次点击。
大多数点击显示
$dom = new \DOMDocument();
或
$dom = new DOMDocument();
我之前在外部服务器上按照相同的脚本安装了Symfony,并且能够毫无问题地运行app_dev.php
。 (FreeBSD的)
new \DOMDocument();
和new DOMDocument();
之间有什么区别?
我是JavaScript和PHP的新手。有谁知道我应该怎么做才能纠正这个问题?或者有关如何解决问题的一些线索?
答案 0 :(得分:11)
在CentOS 6.5上运行 yum install php-xml 为我解决了这个问题。
答案 1 :(得分:3)
从另一个命名空间内部从全局命名空间加载类时,需要使用反斜杠(new \DomDocument()
)。换句话说,如果您在文件顶部使用namespace <something>
,则必须使用new \DomDocument()
从全局命名空间加载DomDocument
。如果您在全局命名空间中(默认情况下,如果您没有显式声明命名空间),则可以直接使用new DomDocument()
。
如果你用反斜杠和没有反斜杠得到错误,那是因为你错过了PHP扩展:php-xml
。只需将extension=dom.so
添加到您的php.ini即可。默认情况下,扩展名与PHP捆绑在一起。
运行web / config.php以检查缺少的内容。