Symfony2 kernel-> getRootDir()在环境之间返回不同的值

时间:2016-12-20 12:14:59

标签: php symfony debian

在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]

请,任何想法? 感谢

2 个答案:

答案 0 :(得分:0)

这很奇怪,因为getRootDir函数只不过是:

$r = new \ReflectionObject($this);
$this->rootDir = dirname($r->getFileName());

生产环境是否部署在其他地方?

答案 1 :(得分:0)

问题解决了!

app / mailspool / default 存储库中,有一个隐藏文件(表示邮件等待),此文件可能是由另一台服务器上托管的旧版本应用程序产生的。因此,目录树是不同的。

所以我删除了这个文件,一切正常!

谢谢:)