2
我有一個非常奇怪的錯誤。加載的類來自錯誤的目錄
我在一臺機器上有兩個虛擬主機:分段和生產。
它們位於/ var/www/staging /和/ var/www/production /中。我部署通過Capifony我的Symfony2項目(斯特拉努的Symfony2的擴展名),所以Web目錄是在/ var/WWW /分期/電流/網絡/
當我echo __DIR__
在我的控制,我得到
/var/www/production/releases/20130424075147/src/Acme/DemoBundle/Controller
這是正確的。但是,如果我現在得到的實體從它的存儲庫(例如)
$object = $this->getDoctrine()->getManager()->getRepository('AcmeDemoBundle:Object')->findOneById(1);
,做echo $object->getUploadRootDir()
(從the cookbook),它使用__DIR__
我突然得到
/var/www/staging/releases/20130424075333/src/Acme/DemoBundle/Entity/../../../../web/upload/
不知何故,在加載對象時,它切換到暫存環境而不是生產(兩個不同的發佈文件夾僅僅是因爲生產和臨時存在不同版本)。
這是由於自動加載?虛擬主機中的配置錯誤?
下面是我的兩個虛擬主機
<VirtualHost *:80>
DocumentRoot "/var/www/production/current/web"
ServerName example.com
ServerAlias www.example.com example.com
SetEnv SYMFONY_ENV prod
SetEnv SYMFONY_DEBUG 0
<Directory /var/www/production/current/web>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/staging/current/web"
ServerName staging.example.com
ServerAlias staging.example.com
SetEnv SYMFONY_ENV dev
SetEnv SYMFONY_DEBUG 1
<Directory /var/www/staging/current/web>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</Directory>
</VirtualHost>
來些緩存?或學說引用...?還是Symfony/Doctrine配置...?我想你只是從分期複製粘貼到生產中,或者你使用任何版本控制工具(如Git,SVN,...)? – shadyyx 2013-04-24 08:53:46
我正在使用Git和Capistrano進行部署。我們的系統管理員幫我解決問題,會發布答案。 – Bram 2013-04-24 09:05:26