2009-12-01 34 views
0

我是新來的教條。我創建了一個引導文件類似以下:預期學說加載模塊例外

require_once(dirname(__FILE__)."/../conf/general.php"); 
require_once(dirname(__FILE__).'/Doctrine/lib/Doctrine.php'); 
spl_autoload_register(array('Doctrine', 'autoload')); 

$manager = Doctrine_Manager::getInstance(); 
$manager->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL); 
$manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true); #for accessor overriding 
$manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true); #in order to be able to use the XTable classes 
$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE); #to conservatively load files 
$manager->setAttribute(Doctrine::ATTR_EXPORT, Doctrine::EXPORT_ALL); 

$dsn = "mysql:dbname=".DBNAME.";host=".DBHOST; 
$dbh = new PDO($dsn, DBUSERNAME, DBPASS); 
$conn = Doctrine_Manager::connection($dbh); 
Doctrine_Core::loadModels('doc_models'); #In order to be able to work with models 

php bootstrap.php
命令的工作而已。 但我有目錄下Ÿ文件X.php,我需要X.php bootstrap.php中的文件,但是當我在目錄Ÿ跑X.php像
 php X.php
我有以下異常:

 
Doctrine_Exception: You must pass a valid path to a directory containing Doctrine models in /path_to_directory_of_bootstrap_file/Doctrine/lib/Doctrine/Core.php on line 635 

現在,我該如何解決這個問題?

順便說一句,當我把X.php和bootstrap.php放在同一個目錄下時,它的工作方式和預期的一樣。 我也試圖要求絕對路徑,但這並沒有解決我的問題。我正在測試Ubuntu 9.10並從梨安裝原則。學說版本是1.2.0。

回答

1

你是否嘗試在需要時使用絕對路徑? Realpath可以幫助您創建這些路徑。

+0

我試過絕對路徑,沒有用。我忘了在帖子中提到,我會更新帖子。順便說一句,當我改變我的目錄與chdir到bootstrap.php的目錄,它似乎工作。但是對於我來說,使用chdir並在每個需要bootstrap.php的文件中更改文件路徑看起來很尷尬。我認爲,必須有更好的解決方案。 – systemsfault 2009-12-01 14:36:03

1

我認爲這個錯誤在學習期望某些模型目錄存在時被觸發。如果您在構建模型類之前嘗試從schema.yml生成SQL,也會發生該錯誤。當模型類建成時,他們創建了一堆目錄,這是我認爲你缺少的目錄。