![](/img/trans.png)
[英]Symfony : kernel->loadClassCache and multiple render controller
[英]Symfony2 kernel->getRootDir() returns a different value between environments
在Symfony2应用程序中,我使用SwiftMailer通过手动命令发送邮件:
php app/console swiftmailer:spool:send
在每封邮件中,图像都是通过这样的自定义邮件服务嵌入的:
$this->mailer->addEmbed('embed_logo', $this->kernel->getRootDir().'/../web/bundles/mybundle/images/my-logo.png');
在“开发”环境中, $this->kernel->getRootDir()
返回正确的值( /var/www/mydirectory/sources/mysymfoproject/app
),因此该命令有效。 但是在“产品”环境中,当父目录“ mydirectory”在文件系统中非常存在时, $this->kernel->getRootDir()
返回错误的值(/var/www/sources/mysymfoproject/app
)。 。
终端中显示的错误是:
无法打开文件以阅读[/var/www/sources/mysymfoproject/app/../web/bundles/mybundle/images/my-logo.png]
拜托,有什么主意吗? 谢谢
这很奇怪,因为getRootDir函数只不过是:
$r = new \ReflectionObject($this);
$this->rootDir = dirname($r->getFileName());
生产环境是否已部署在其他地方?
问题解决了 !
在app / mailspool / default存储库中,有一个隐藏文件(表示正在等待邮件),并且此文件可能是由另一台服务器上托管的较旧版本的应用程序导致的。 因此,目录树是不同的。
所以我删除了这个文件,一切正常!
谢谢 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.