2016-04-03 30 views
2

Ich bin neu bei stackoverflow und habe einige Fragen zur Bereitstellung von Google Cloud- und Symphony-Apps. Ich habe die Dokumentation zu https://cloud.google.com/appengine/docs/php/symfony-hello-world gelesen und es geschafft, die Hello Word-App bereitzustellen, aber wenn ich mit meiner Symfoy-App versuche, habe ich seinen Fehler: InvalidArgumentException in XmlFileLoader.php Zeile 259: Datei kann nicht parsen "(...) DependencyInjection/../Resources/config\web.xml ". In meinem app.yaml stelle ich die env Variablen: env_variables: GCS_BUCKET_NAME: "pinterpandaibucket" CACHE_DIR: "gs: // pinterpandaibucket/Symfony/cache" LOG_DIR: "gs: // pinterpandaibucket/Symfony/log" und ich überlastete die AppKernel.php Funktionen:Symfony-App auf Google App-Engine bereitstellen

<?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'); 
} 
} 
?> 

die Funktionen, die im Dateisystem schreiben werden, um den Eimer umgeleitet. Könnten Sie mir helfen, herauszufinden, welche Änderungen in meiner App fehlen? Ich hoffe, dieses Thema hilft anderen, da die Google Cloud-Dokumentation nicht sehr aktuell ist. Vielen Dank im Voraus und Entschuldigung, wenn ich nicht gut Englisch spreche Ich bin ein Französisch IT-Student.

Augustin

+0

Dies hängt wahrscheinlich nicht mit GCS zusammen, da Sie immer noch statische Dateien aus dem Dateisystem lesen können. Die App sollte versuchen, /vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml zu laden. Um sicher zu sein, sollten Sie die vollständige Fehlermeldung in der Frage anstelle einer abgeschnittenen Version angeben. Kannst du diese Datei in deiner App mit der aus dem funktionierenden symfony-starter vergleichen? Hast du deine App von der funktionierenden Startanwendung entfernt oder etwas anderes getan, um zu versuchen, dass sie in App Engine funktioniert? – Adam

Antwort

1

Ich habe viele eine Stunde auf diesem schrecklichen Fehler ausgegeben, und was ich fand, war diese Frage auf dem Dev AppServer passiert, aber nicht in der Produktion. Ich glaube, es ist ein Problem mit der Implementierung der PHP-Erweiterung xml.so in dieser Umgebung.

Dies wird in der symfony Starter App mit der Methode fixXmlFileLoaderBug behoben, die in web/app.php aufgerufen wird. Stellen Sie sicher, dass dies aufgerufen wird, und Sie sollten gut gehen.

Wenn dieser Fehler in der Produktion auftritt oder das Problem auch nach dem Aufruf dieser Funktion weiterhin auftritt, teilen Sie uns dies bitte unter filing an issue auf github mit.

+0

Vielen Dank für Ihre Antwort, aber ich entscheide mich schließlich dafür, die Google Cloud-Plattform aufzugeben, und es gelingt mir, meine App auf Amazon bereitzustellen. Ich steckte fest in prod mit dem Dateilimit http://stackoverflow.com/questions/1462208/is-it-correct-that-you-are-allowed-3-000-files-per-app-engine-app-not -1-000 –

Verwandte Themen