将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学生。

奥古斯丁

+0

这可能与GCS无关,因为您仍然可以从文件系统读取静态文件。该应用程序应该尝试加载/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml。可以肯定的是,你应该在问题中包含完整的错误信息而不是截断版本。你可以将你的应用程序中的这个文件与工作的symfony-starter中的文件进行比较吗?您是否将您的应用程序从工作初级应用程序中删除,或者尝试以不同方式尝试使其在App Engine上运行? – Adam

我花了这个可怕的错误很多的时间,什么我发现了这个问题发生在开发应用程序服务器,而不是在生产。我相信这是在该环境中执行xml.so php扩展的问题。

这是在symfony初学者应用程序中使用方法fixXmlFileLoaderBug修复的,该方法在web/app.php中调用。所以确保这个被调用,你应该很好去。

如果您在制作中遇到此错误,或者即使在调用此函数后仍然遇到此问题,请通过github上的filing an issue告知我们。

+0

非常感谢您的回答,但我最终选择放弃Google云平台,并设法在亚马逊上部署我的应用。我被困在与文件限制http://stackoverflow.com/questions/1462208/is-it-correct-that-you-are-allowed-3-000-files-per-app-engine-app-not -1-000 –