我是学说的新手。我创建了一个类似下面的引导程序文件:
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。答案 0 :(得分:1)
您是否尝试过使用绝对路径? Realpath可以帮助您创建这些路径。
答案 1 :(得分:1)
我认为当doctrine期望某些模型目录存在时会触发此错误。如果您在构建模型类之前尝试从schema.yml生成SQL,则也会发生此错误。当模型类构建时,它们会创建一堆目录,而我认为你缺少这些目录。