1

我正在尝试将 Composer 集成到在仅支持 5.2 的服务器上运行的旧 PHP 应用程序中。该应用程序是使用 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 的位置。include_paths.phpComposer 目录中的文件只显示:

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

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

将正确的目录添加到上面的数组中确实可以解决问题。但我不想接触生成的文件,我希望我遗漏的问题有一些微妙之处,而不是需要实施解决方法或弄清楚如何修复已发布的包。

4

1 回答 1

2

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

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

然后用于composer dump-autoload重新生成自动装载机。

于 2012-10-22T08:04:29.593 回答