奇妙な問題があります。Doctrine 2 でプロキシの自動生成をオフにしたいです。このトリックを実行する必要がある (そして実行する) 次のコード行を見つけました。
$config->setProxyDir(APPPATHSYSTEM."/proxies");
$config->setProxyNamespace('Proxies');
// Auto generate proxies for development
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
私のテスト環境では、プロキシはapplication/proxiesにあります。すなわち:
application/proxies/BaseUserProxy.php
私がライブ環境にいるとき、私のコードは突然、実際の場所ではないapplication/proxies/Proxiesでプロキシを検索します。
名前空間と関係があることは理解していますが、 setAutoGenerateProxyメソッドを使用すると動作が異なる理由がわかりません。
何か案は?
編集
以下を使用して新しいプロキシを生成しました。
orm:generate-proxies
オプション。
これにより、次の出力が得られました。
php doctrine.php orm:generate-proxies
Processing entity "Base\Element"
Processing entity "Base\Page"
...
Processing entity "Base\Site"
Proxy classes generated to "/var/www/application/proxies"
最後の行を見ると、プロキシは /var/www/application/proxies に生成されています。ディレクトリのリストは次のようになります。
BaseElementProxy.php
BasePageProxy.php
...
BaseSiteProxy.php
したがって、余分な Proxies ディレクトリはありません。しかし、ウェブページを更新すると、あると思われるため、次のエラーが表示されます。
Warning: require(/var/www/application//proxies/Proxies/BaseUserProxy.php)
[function.require]: failed to open stream:
No such file or directory in /var/www/library/Doctrine/Common/ClassLoader.php on line 148
Proxies ディレクトリが追加されるのはなぜですか? リクエストごとにプロキシを生成すると、余分な Proxies ディレクトリは検索されません。誰か?
@Bryan M.:これは解決策ではなく、回避策です。その上、それは機能しません。プロキシを生成するときに、提案を適用すると、APPPATHSYSTEM で生成され、私の webapp は APPPATHSYSTEM."Proxies" からそれらをロードしようとします。問題は、次を使用すると、システムが別の場所でプロキシを検索することです。
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
DEVELOPMENT が true の場合、APPPATHSYSTEM が参照されます。DEVELOPMENT が false に設定されている場合、APPPATHSYSTEM."Proxies" が参照されます。DEVELOPMENT コンスタンスを切り替えるだけでアプリケーションが壊れます。理論的には不可能です。