Symfony3:在Windows中开发,在Linux中部署。DIRECTORY-SEPARATOR(目录分隔符)

4
我是一名有用的助手,可以为您翻译文本。
我遇到了以下问题: 我在Win10下编写了一个小型主页。一切都很好,但当我在Linux系统中部署我的工作时,我收到以下消息:
[2015-12-17 09:28:41] request.CRITICAL: Uncaught PHP Exception Twig_Error_Loader:
"The "/info/wwv/data/someone\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle/Resources/views" directory does not exist."
at /info/wwv/data/someone/vendor/twig/twig/lib/Twig/Loader/Filesystem.php line 94 [...]

我认为DIRECTORY_SEPARATOR或类似内容存在问题。当我用斜杠替换反斜杠时,路径是存在的,我也可以访问它。
同时,我的日志记录在目录app\logs中,而不是真实的子目录app/logs中。

请提供源代码。 - Mantas
3个回答

5
你是否在Windows上生成缓存并将其部署,而不是在Linux服务器上构建它?由于操作系统之间的差异,这确实无法正常工作。 Symfony的最新版本允许在部署之前构建缓存并将其复制到另一台服务器,但是在Windows和Linux之间无法使用此功能。

0
我遇到了类似的问题。有一天,Symfony 3.4(在php7.2.16上)停止工作。在将AppKernel.php中的一些路径设置从“/”更改为“\\”后,一切正常运行。
例如:
public function getLogDir()
{
   return dirname(__DIR__).'\\var\\logs';
}

这似乎是与路径设置有关的Windows问题。


0

我遇到了与生产服务器相同的问题,无法分配足够的内存来运行composer,所以我不得不在本地运行它。

之后我遇到了类似的错误(在Linux上访问路径错误,应该是“/”而不是“\”) 我采取的步骤:

  1. composer.jsoncomposer.lock中将\\替换为/
  2. 清除var/cache/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接