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

確かに、Doctrine の場所を含めるように include_path が変更されていないことが問題のようです。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 に答える