Doctrine加载模块异常

时间:2009-12-01 14:02:51

标签: php orm doctrine

我是学说的新手。我创建了一个类似下面的引导程序文件:

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
命令正常工作。 但我在目录Y下有一个文件X.php,我需要在X.php中使用bootstrap.php文件;但是当我在目录Y中运行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并从pear安装了doctrine。 Doctrine版本是1.2.0。

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用绝对路径? Realpath可以帮助您创建这些路径。

答案 1 :(得分:1)

我认为当doctrine期望某些模型目录存在时会触发此错误。如果您在构建模型类之前尝试从schema.yml生成SQL,则也会发生此错误。当模型类构建时,它们会创建一堆目录,而我认为你缺少这些目录。