質問

私は教義が初めてです。次のようなブートストラップファイルを作成しました。

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ファイルが必要ですが、
 php X.php
のようにディレクトリYで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でテストしており、doctrineをpearからインストールしています。 Doctrineのバージョンは1.2.0です。

役に立ちましたか?

解決

必要なときに絶対パスを使用しようとしましたか? Realpath は、これらのパスの作成に役立ちます。

他のヒント

このエラーは、Doctrineがいくつかのモデルディレクトリの存在を期待しているときにトリガーされると思います。モデルクラスを作成する前にschema.ymlからSQLを生成しようとした場合にもエラーが発生します。モデルクラスが構築されると、多数のディレクトリが作成されますが、これらが存在しないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top