2010-01-18 165 views
2

是否可以安裝並使用ZF(+其控制檯工具)而無需訪問include_path direcotory?我試着將... Zend/library direcotry添加到include_path中,但沒有成功。Zend工具包含路徑

我這樣做的:

php -r 'set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/.../Zend/library")'; 

荷蘭國際集團功能的結果上面,它返回舊的include_path這應該意味着成功後var_dump。但是下一次調用get_include_path()也會返回舊的路徑。

我也試着設置環境變量:

ZF_INCLUDE_PATH_PREPEND="/var/www/.../Zend/library" 

有我們公司在老的include_path目錄的框架,所以我不能(即使我能我should't)複製那裏ZF庫。

我認爲一個合適的框架不應該像include_path一樣依賴任何全局PHP設置。我認爲應該可以在ZF內部配置文件中的某處設置include路徑。

編輯:
我加set_include_path('/var/www/.../Zend/library')到zf.php文件和工具不再扔 '錯誤的include_path' 的錯誤。事實上,它可以打印任何輸出。執行命令zf create project test時,它什麼都不做。 〜/ .zf文件夾未創建。

回答

4

如果您不能在某些「全局」包含路徑中複製zf庫,例如/usr/share/php/,您仍然可以將其複製到您的項目所在的位置,然後從那裏啓動zf工具。一個文件夾結構,如:

/var/www/zf_tool 
       `/bin/ 
         `zf.sh 
         `zf.php 
       `/library 
         `/Zend 

複製Zend文件夾下的庫,和binzf.shzf.php腳本,並將其設置爲可執行chmod a+x zf.sh zf.php如果他們不已經。 接下來,如果您運行/var/www/project/bin/zf.sh它將在include_path中查找zf文件,但如果它不在那裏,它將上傳一個文件夾並進入library文件夾。只有在不存在zf庫的情況下,它纔會死於錯誤。最後,創建一個新的ZF項目也很簡單:

$ pwd 
/var/www/zf_tool/bin 
$ ./zf.sh create project /var/www/test_project 

就是這樣。 HTH :)

+0

我剛試過你的解決方案,它似乎不工作。腳本隨着包含路徑錯誤而死亡。 – 2010-02-08 15:16:17

+0

更新:我忘了Zend目錄。創建它之後。它不會因爲一個錯誤而死去......它只是死去而沒有任何事情:-( – 2010-02-08 15:21:15

1

使用set/get include_path函數只會將它設置爲「請求」的生命週期,因此只要命令/ Web請求完成,它就會恢復正常。就設置本地副本的包含路徑而言,您可以在環境變量中嘗試,或者在您的~/.zf文件夾中。那裏有配置,並且有一個設置cor包含路徑。

除此之外,您還可以將您在php -r ...中的內容添加到您直接執行的shell腳本中,但這不是推薦的方式。

+0

感謝您的回答,沒有〜/ .zf文件夾。 Zend_tool總是退出並出錯(「爲了運行zf命令,你需要確保Zend Framework在你的include_path中。」)所以我認爲它無法創建它。我直接將set_include_path()添加到zf.php文件中,但它似乎不起作用。 (查看問題編輯) – 2010-01-19 08:38:17