将symfony应用程序部署到Google应用程序引擎
我是stackoverflow的新成员,我对Google云和Symphony应用程序部署有一些疑问。我已阅读https://cloud.google.com/appengine/docs/php/symfony-hello-world的文档,并设法部署了Hello Word应用程序,但是当我尝试使用我的symfoy应用程序时,出现了以下错误: XmlFileLoader.php中的InvalidArgumentException行259:无法解析文件“(...)DependencyInjection/../Resources/config\web.xml”。 在我的app.yaml我设置了ENV变量: env_variables: GCS_BUCKET_NAME: “pinterpandaibucket” 的cache_dir: “GS:// pinterpandaibucket/symfony中/高速缓存” LOG_DIR: “GS:// pinterpandaibucket/symfony中/日志” 我重载AppKernel.php功能:将symfony应用程序部署到Google应用程序引擎
<?php
public function __construct($environment = null, $debug = null)
{
// determine the environment/debug configuration based on whether or not this is running
// in App Engine's Dev App Server, or in production
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学生。
奥古斯丁
我花了这个可怕的错误很多的时间,什么我发现了这个问题发生在开发应用程序服务器,而不是在生产。我相信这是在该环境中执行xml.so
php扩展的问题。
这是在symfony初学者应用程序中使用方法fixXmlFileLoaderBug
修复的,该方法在web/app.php
中调用。所以确保这个被调用,你应该很好去。
如果您在制作中遇到此错误,或者即使在调用此函数后仍然遇到此问题,请通过github上的filing an issue告知我们。
非常感谢您的回答,但我最终选择放弃Google云平台,并设法在亚马逊上部署我的应用。我被困在与文件限制http://stackoverflow.com/questions/1462208/is-it-correct-that-you-are-allowed-3-000-files-per-app-engine-app-not -1-000 –
这可能与GCS无关,因为您仍然可以从文件系统读取静态文件。该应用程序应该尝试加载/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml。可以肯定的是,你应该在问题中包含完整的错误信息而不是截断版本。你可以将你的应用程序中的这个文件与工作的symfony-starter中的文件进行比较吗?您是否将您的应用程序从工作初级应用程序中删除,或者尝试以不同方式尝试使其在App Engine上运行? – Adam