2009-12-01 2 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 в директории 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 

Теперь, как я могу исправить эту проблему?

BTW, когда я поставил X.php и bootstrap.php в том же каталоге, он работает так, как ожидалось. Я также пытался потребовать абсолютные пути, но это не решило мою проблему. Я тестирую Ubuntu 9.10 и устанавливаю учение из груши. Версия Doctrine - 1.2.0.

ответ

1

Пробовал ли вы использовать абсолютные пути во время вызова? Realpath может помочь вам создать эти пути.

+0

Я пробовал абсолютные пути и не пользовался. Извините, что забыл упомянуть в своем посте, я обновлю сообщение. BTW, когда я меняю свой каталог с chdir на каталог bootstrap.php, он работает. Но мне неудобно использовать chdir и изменять путь файла в каждом файле, который требует bootstrap.php. Я думаю, для этого должно быть лучшее решение. – systemsfault

1

Я думаю, что эта ошибка срабатывает, когда доктрина ожидает, что некоторые модельные каталоги будут существовать. Ошибка также возникает, если вы пытаетесь сгенерировать SQL из schema.yml, прежде чем вы построили классы моделей. Когда классы моделей создаются, они создают кучу каталогов, и именно они, я думаю, вам не хватает.

Смежные вопросы