Symfony 4部署至GAE安装validator组件报错的解决问询
这问题我之前碰到过类似的,核心原因是安装symfony/validator组件时,它会自动依赖并安装symfony/translation组件,而翻译组件要求项目根目录下存在translations目录才能正常执行cache:clear命令——但GAE的部署环境是从头构建的,如果你没把这个目录提交到版本控制,部署时就会出现你看到的报错。
下面是具体的解决步骤:
创建并提交translations目录
在你的本地项目根目录下创建一个空的translations文件夹:mkdir translations然后把这个目录添加到版本控制(比如Git)并提交,这样部署到GAE时,环境里就会自动包含这个目录了。空目录也没关系,Symfony只需要它存在即可。
检查翻译组件的配置文件
打开config/packages/translation.yaml,确认配置里的路径使用的是Symfony的环境变量,而不是硬写的/app/translations:framework: translator: paths: - '%kernel.project_dir%/translations' fallbacks: - en用
%kernel.project_dir%变量可以适配本地和GAE部署环境的不同路径,避免硬编码路径带来的问题。调整GAE部署脚本(可选)
如果你的部署脚本(比如composer.sh)里有清理目录的逻辑,确保没有误删translations目录。或者可以在脚本里添加一行命令,在执行composer install前先创建目录:mkdir -p translations这样就算目录被意外删除,部署时也会自动重建。
本地提前验证
在部署到GAE之前,先在本地执行以下命令验证修复效果:composer install php bin/console cache:clear --env=prod如果本地执行没有报错,说明配置没问题,再部署到GAE就不会出问题了。
内容的提问来源于stack exchange,提问作者fragbait

