我已经阅读了https://cloud.google.com/appengine/docs/php/symfony-hello-world上的文档,我设法部署了Hello World应用程序,但是当我尝试使用我的symfony应用程序时,我发现了他的错误:
XmlFileLoader.php第259行中的InvalidArgumentException:无法解析文件“(...)DependencyInjection /../ Resources / config \ web.xml”。
在app.yaml中我设置了env变量:
env_variables:
GCS_BUCKET_NAME: "pinterpandaibucket"
CACHE_DIR: "gs://pinterpandaibucket/symfony/cache"
LOG_DIR: "gs://pinterpandaibucket/symfony/log"
我重载了AppKernel.php函数:
public function __construct($ environment = null,$ debug = null) { //根据是否正在运行来确定环境/调试配置 //在App Engine的Dev App Server或生产中 if(is_null($ debug)){ $ debug =!Environment :: onAppEngine(); }
if (is_null($environment)) {
$environment = $debug ? 'dev' : 'prod';
}
parent::__construct($environment, $debug);
// Symfony console requires timezone to be set manually.
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
// Enable optimistic caching for GCS.
$options = ['gs' => ['enable_optimsitic_cache' => true]];
stream_context_set_default($options);
$this->gcsBucketName = getenv('GCS_BUCKET_NAME');
...
public function getCacheDir()
{
if ($this->gcsBucketName) {
return getenv('CACHE_DIR');
}
return parent::getCacheDir();
}
public function getLogDir()
{
if ($this->gcsBucketName) {
return getenv('LOG_DIR');
}
return parent::getLogDir();
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}
?>
写入文件系统的函数被重定向到存储桶。
你能帮我找一下我的应用程序中缺少哪些修改。
我希望此主题可以帮助其他人,因为Google云文档不是最新的。
提前感谢,如果我不会说英语,我很抱歉,我是法国IT学生。
奥古斯丁
答案 0 :(得分:1)
我花了很多时间来处理这个可怕的bug,我发现这个问题发生在Dev AppServer上,但不是在生产中。我相信在该环境中实现xml.so
php扩展是一个问题。
这在symfony starter app中使用fixXmlFileLoaderBug
方法修复,该方法在web/app.php
中调用。所以要确保这个被调用,你应该好好去。
如果您在制作中遇到此错误,或者即使在调用此函数后仍然遇到此问题,请通过github上的filing an issue告知我们。