与Composer一起安装的Doctrine 1无效

时间:2012-10-21 16:47:43

标签: php doctrine composer-php

我正在尝试将Composer集成到一个旧的PHP应用程序中,该应用程序在仅支持5.2的服务器上运行。该应用程序是使用Zend Framework 1和Doctrine 1编写的。在执行相关集成并尝试在composer上提供的各种软件包后,我在运行应用程序时遇到错误:

PHP Warning:  include(Doctrine.php): failed to open stream: No such file or directory in [...]/www/dispatcher.php on line 11
[Sun Oct 21 12:33:31 2012] [error] [client ::1] PHP Warning:  include(): Failed opening 'Doctrine.php' for inclusion (include_path='[...]/application/library:[...]/vendor/digital-canvas/zend-framework/library:.:/usr/share/php5:/usr/share/php:[...]/app/application/../library:[...]/application/../ext') in [...]/www/dispatcher.php on line 11

肯定会出现问题,即include_path未被修改为包含Doctrine的位置。 Composer目录中的include_paths.php文件仅显示:

return array(
    $vendorDir . '/digital-canvas/zend-framework/library',
);

并且我注意到Doctrine 1包中的composer.json个文件都没有包含include-path指令,我假设该指令会修改该文件。我错过了什么吗?这些包装是否有轻微损坏,需要明确的包含才能开始滚动?

上面的数组中添加正确的目录可以解决问题。但是我不想触及生成的文件,我希望这个问题有些微妙,我缺少而不需要实现变通方法或弄清楚如何修复已发布的包。

1 个答案:

答案 0 :(得分:2)

这种情况下的问题是Doctrine本身似乎并不依赖于include_path,而是ZF1,所以我建议您只需在项目的include路径中添加该路径,如下所示:

{
    "include-path": ["vendor/doctrine/doctrine1/lib"]
}

然后使用composer dump-autoload重新生成自动加载器。