可能重复:
在 Symfony2 中使用 Imagick?
我是 Symfony 的新手,所以这可能是一个愚蠢的问题。但是由于经过几个小时的谷歌搜索,我还没有找到任何相关的答案,所以在这里可能值得一试。
所以基本上我使用 Windows、Apache、纯 PHP、Mongodb 和“原始”PHP_Mongodb PECL 驱动程序(此处使用“原始”一词与 Symfony2 中的 Doctrine Mongodb ODM 包不同)进行 Web 应用程序开发。PECL 驱动程序工作得很好,我可以这样写:
<?php
$m = new Mongo();
$db = $m->myDB;
$db->find();
//Do Other DB Operations.
上面的代码在没有任何“use”、“include”或“require”语句的情况下运行良好,因为我遵循标准说明并在 php.ini 中设置了 PECL 驱动程序扩展。在 Web 浏览器中显示 phpinfo() 时,Mongodb 驱动程序信息会正确显示。一切都很完美。
然后我开始使用 Symfony2,因为它提供了 url 重写、MVC 模式、安全性和其他有用的东西。Doctrine Mongodb ODM 包运行良好,但在我看来,它只能持久化 PHP 对象。我的项目中确实有一堆 javascript 对象要持久化,除了在其上放置一个“PHP 包装器”(创建一个仅包含该 javascript 对象的 PHP 对象)之外,根本没有办法做到这一点。
当我尝试使用旧的 PECL 技巧与上面相同的代码块与数据库通信时,我收到了这个错误:
Fatal error: Class 'MyProject\Controller\Mongo' not found in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Symfony\src\MyProject\Controller\DefaultController.php on line 47.
似乎 Symfony2 仅在寻找其自动类加载器时阻止或覆盖了 php.ini 中的扩展路径。我想我需要更改 autoload.php 和/或 AppKernel.php 以包含该扩展名?请帮助我了解这里发生了什么。我可以在 Symfony2 中使用 PECL 驱动程序吗?或者 Doctrine Mongodb ODM是在 Symfony2 中访问数据库的唯一方法吗?谢谢!