2012-10-21 75 views
1

我正在嘗試將Composer集成到僅支持5.2的服務器上運行的舊PHP應用程序。該應用程序與Zend框架1和學說1.書面進行相關集成,並試圖各色封裝的作曲家我得到的錯誤一旦運行該應用程序後:與Composer一起安裝的Doctrine 1無法正常工作

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_paths.php文件中的作曲家目錄中只顯示:

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

而且我發現沒有在原則1包composer.json文件包括include-path指令,它我假設會是怎樣修改該文件。我錯過了什麼嗎?這些軟件包是否稍微破碎,並且需要明確包含才能開始滾動?

將適當的目錄添加到以上的數組解決了這個問題。但我不想接觸生成的文件,我希望我錯過了一些微妙的問題,而不是需要實施解決方法或找出如何修復已發佈的軟件包。

回答

2

在這種情況下的問題是,這種理論本身似乎並不取決於包含路徑,但是ZF1呢,所以我會建議你只需要添加在你的項目中像這樣包括路徑路徑:

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

然後使用composer dump-autoload重新生成自動裝載機。

+0

謝謝,這聽起來很有希望。我想避免硬連接路徑,所以我會考慮連接到Composer或至少它的配置文件,但這不會太早。 –

+0

這只是您composer.json的一個相對路徑,並不像它會改變,因爲它只是您的供應商目錄+包名,它們在時間和機器上都相當穩定。這真的不是很危險。 – Seldaek

+0

我誤解了配置的去向(我以爲它在作曲家之外)。這個方向應該很好。 –