Исключение модуля загрузки доктрины
Вопрос
Я новичок в учении. Я создал файл начальной загрузки, подобный следующему:
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 в каталоге Y, и мне требуется файл bootstrap.php в X.php, но когда я запустил X.php в каталоге Y, как
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.
Решение
Пытались ли вы использовать абсолютные пути во время запроса? Realpath может помочь вам создать эти пути.
Другие советы
Я думаю, что эта ошибка возникает, когда доктрина ожидает существования некоторых модельных каталогов. Ошибка также возникает, если вы пытаетесь сгенерировать SQL из schema.yml ПЕРЕД созданием классов модели. Когда классовые модели создаются, они создают кучу каталогов, и я думаю, что вы их пропустили.