在Symfony2应用程序中,我使用 SwiftMailer 通过手动命令发送邮件:
php app/console swiftmailer:spool:send
在每封邮件中,图像都是从这样的自定义邮件服务中嵌入的:
$this->mailer->addEmbed('embed_logo', $this->kernel->getRootDir().'/../web/bundles/mybundle/images/my-logo.png');
在" dev"环境,$this->kernel->getRootDir()
返回正常值(/var/www/mydirectory/sources/mysymfoproject/app
),因此该命令有效。但是在" prod" 环境中,$this->kernel->getRootDir()
会返回错误值(/var/www/sources/mysymfoproject/app
),而父目录" mydirectory" 非常存在于文件系统中......
终端显示的错误是:
无法打开文件进行阅读[/ var / www / sources / mysymfoproject / app /../ web / bundles / mybundle / images / my-logo.png]
请,任何想法? 感谢
答案 0 :(得分:0)
这很奇怪,因为getRootDir函数只不过是:
$r = new \ReflectionObject($this);
$this->rootDir = dirname($r->getFileName());
生产环境是否部署在其他地方?
答案 1 :(得分:0)
问题解决了!
在 app / mailspool / default 存储库中,有一个隐藏文件(表示邮件等待),此文件可能是由另一台服务器上托管的旧版本应用程序产生的。因此,目录树是不同的。
所以我删除了这个文件,一切正常!
谢谢:)