2016-04-21 3 views
4

Ich möchte wissen, warum, wenn ich mein ZF2-Projekt zu einem lokalen Computer klonen, um einige Tests zu tun, hört es vollständig auf zu arbeiten.ZF2-Projekt funktioniert nicht mehr, wenn auf lokalen Server geklont wird

In meiner lokalen Maschine habe ich zwei Unterordner, einen mit einem CakePHP-Projekt und den anderen mit dem ZF2, den ich geklont habe.

Die CakePHP Projekt funktioniert gut, da es dort erstes war, aber die ZF2, wenn ich an den öffentlichen Ordner zuzugreifen versuchen, es druckt ich:

{"error":"Something went wrong"} 

Ein wirklich allgemeiner Fehler ... Ich habe keine Ahnung davon, was vor sich geht.

Ich habe einige allgemeine Debug versucht attemps wie

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

ohne Erfolg überhaupt, ich habe auch überprüft die .htaccess RewriteBase Richtlinie mein Unterordner übereinstimmen und die DB-Konfiguration wird auch getan.

Ich habe ein wenig in das Projekt und die Datei untersucht, die den Fehler anzeigt, ist module/RestfulV2_2/Module.php (Lesen der README.md ich entdeckt habe Teil ZF2 Restful Module Skeleton ist):

/** 
* @param MvcEvent $e 
* @return null|\Zend\Http\PhpEnvironment\Response 
*/ 

public function errorProcess(MvcEvent $e) 
    { 
     /** @var \Zend\Di\Di $di */ 
     $di = $e->getApplication()->getServiceManager()->get('di'); 

     $eventParams = $e->getParams(); 

     /** @var array $configuration */ 
     $configuration = $e->getApplication()->getConfig(); 

     $vars = array(); 
     if (isset($eventParams['exception'])) { 
      /** @var \Exception $exception */ 
      $exception = $eventParams['exception']; 

      if ($configuration['errors']['show_exceptions']['message']) { 
       $vars['error-message'] = $exception->getMessage(); 
      } 
      if ($configuration['errors']['show_exceptions']['trace']) { 
       $vars['error-trace'] = $exception->getTrace(); 
      } 
     } 

     if (empty($vars)) { 
      $vars['error'] = 'Something went wrong'; 
     } 

     /** @var PostProcessor\AbstractPostProcessor $postProcessor */ 
     $postProcessor = $di->get(
      $configuration['errors']['post_processor'], 
      array('vars' => $vars, 'response' => $e->getResponse()) 
     ); 

     $postProcessor->process(); 

     if (
      $eventParams['error'] === \Zend\Mvc\Application::ERROR_CONTROLLER_NOT_FOUND || 
      $eventParams['error'] === \Zend\Mvc\Application::ERROR_ROUTER_NO_MATCH 
     ) { 
      $e->getResponse()->setStatusCode(\Zend\Http\PhpEnvironment\Response::STATUS_CODE_501); 
     } else { 
      $e->getResponse()->setStatusCode(\Zend\Http\PhpEnvironment\Response::STATUS_CODE_500); 
     } 

     $e->stopPropagation(); 

     return $postProcessor->getResponse(); 
    } 

Die Zeile, die den Fehler ruft in meine index.php ist:

Zend\Mvc\Application::init(require 'config/application.config.php')- run(); 

Und die einzige Linie, die ich in dem die Fehlerfunktion eine Möglichkeit genannt wird gefunden ist dies in meiner modele.php:

$sharedEvents->attach('Zend\Mvc\Application', MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'errorProcess'), 999); 

Können Sie mir helfen, dies zu lösen? Ich bin unerfahren mit ZF2, aber ich weiß, dass mit CakePHP, um es zu funktionieren, Sie den Cache-Ordner löschen müssen. Gibt es einen ähnlichen Prozess in ZF2? Sollte ich zwei Server virtualisieren, um Konflikte zu vermeiden?

Vielen Dank im Voraus.

EDIT: Ich habe bereits virtuelle Hosts gemacht, um mögliche Konflikte zwischen meinen beiden Frameworks zu vermeiden, aber die Fehlerausgabe ist immer noch die gleiche.

EDIT2: Hier ist meine application.config.php Datei:

return array(
    // This should be an array of module namespaces used in the application. 
    'modules' => array(
     'Restful', 
     'MvlabsSnappy', 
     'Qrcode', 
     'Application', 
     'RestfulV2', 
     'RestfulV2_2' 
    ), 

    // These are various options for the listeners attached to the ModuleManager 
    'module_listener_options' => array(
     // This should be an array of paths in which modules reside. 
     // If a string key is provided, the listener will consider that a module 
     // namespace, the value of that key the specific path to that module's 
     // Module class. 
     'module_paths' => array(
      './module', 
      './vendor', 
     ), 

     // An array of paths from which to glob configuration files after 
     // modules are loaded. These effectively override configuration 
     // provided by modules themselves. Paths may use GLOB_BRACE notation. 
     'config_glob_paths' => array(
      'config/autoload/{,*.}{global,local}.php', 
     ), 

     // Whether or not to enable a configuration cache. 
     // If enabled, the merged configuration will be cached and used in 
     // subsequent requests. 
     //'config_cache_enabled' => $booleanValue, 

     // The key used to create the configuration cache file name. 
     //'config_cache_key' => $stringKey, 

     // Whether or not to enable a module class map cache. 
     // If enabled, creates a module class map cache which will be used 
     // by in future requests, to reduce the autoloading process. 
     //'module_map_cache_enabled' => $booleanValue, 

     // The key used to create the class map cache file name. 
     //'module_map_cache_key' => $stringKey, 

     // The path in which to cache merged configuration. 
     //'cache_dir' => $stringPath, 

     // Whether or not to enable modules dependency checking. 
     // Enabled by default, prevents usage of modules that depend on other modules 
     // that weren't loaded. 
     // 'check_dependencies' => true, 
    ), 

    // Used to create an own service manager. May contain one or more child arrays. 
    //'service_listener_options' => array(
    //  array(
    //   'service_manager' => $stringServiceManagerName, 
    //   'config_key'  => $stringConfigKey, 
    //   'interface'  => $stringOptionalInterface, 
    //   'method'   => $stringRequiredMethodName, 
    // ), 
    //) 

    // Initial configuration with which to seed the ServiceManager. 
    // Should be compatible with Zend\ServiceManager\Config. 
    // 'service_manager' => array(), 
); 
+0

Überprüfen Sie alle Konfigurationseinstellungen, die absolut festgelegt werden können und auch Ihre htaccess-Datei. – Ukuser32

+0

@ Ukuser32 Ich habe die gesamte Datenbankkonfiguration und die .htaccess RewriteBase geändert, um dem Unterordner zu entsprechen, fehlt mir noch etwas? – Asur

+0

Ich fürchte, ich habe ZF2 schon lange nicht mehr benutzt, also nutze ich nicht mehr - ich habe nur die allgemeinen Dinge versucht. Veröffentlichen Sie Ihre Lösung jedoch, wenn Sie herausfinden, was es ist. – Ukuser32

Antwort

2

Zunächst möchte ich öffnen index.php oder was auch immer als Ausgangsdatei (DirectoryIndex-) verwendet und vorübergehend vollständig seinen Inhalt mit etwas sehr Basis ersetzen ganze und einfach, zum Beispiel nur diese beiden Zeilen:

<?php 
    phpinfo(); 

und dann stellen sie sicher, dass es begann danach zu arbeiten - mit diesem einfachen Code, der nur zeigt Ihre pHP-Konfiguration. Wir werden also herausfinden, dass Serverkonfigurationen, Berechtigungen und so weiter keine Fehler enthalten, und nichts verhindert, dass Ihr Skript ausgeführt wird.

Dann würde ich das gleiche an Ihrem alten Projektort tun, nur um phpinfo() von diesem Ort zu bekommen und verschwenden einige Zeit, um sie zu vergleichen. Vielleicht hast du etwas Wichtiges verpasst und du wirst es jetzt sehen.

Wenn nein - nächster Schritt würde ich Ihre DB-Konnektivität überprüfen, wenn Ihr Projekt DB verwendet ... auch mit einigen sehr einfachen Befehlen wie connect, bind, ....

Und schließlich würde ich versuchen, Original-Projektinhalt Schritt für Schritt von Anfang an wiederherzustellen und zu sehen, welchen Schritt es scheitern wird. Es spielt keine Rolle, dass es vielleicht nicht jeder Ausgang - Sie echo __LINE__ . ' works!<br/>'; zwischen den Blöcken setzen kann, so dass Ihre index.php aussehen wird:

<?php 

// original code block 1 

    echo __LINE__ . ' works!<br/>'; 

// original code block 2 

    echo __LINE__ . ' works!<br/>'; 

Und Sie werden in Browser sehen, wo es fehlschlägt.

Dies ist eine sehr einfache Beschreibung meiner Debug-Prinzipale, aber hoffe, es wird Ihnen helfen.

+0

Ja, dieses grundlegende Debugging hab ich herausgefunden, das ist 'Zend \ Mvc \ Application :: init (require 'config /application.config.php ') -> run(); 'was ruft den Fehler in meiner' index.php' auf ... irgendeinen Hinweis? – Asur

+0

Das ist großartig. Überprüfen Sie, ob Ihr Skript diese Datei lesen darf. Sie können dazu noch ein einfaches Skript verwenden: ' '; spülen(); ob_flush(); 'zwischen allen Zeilen der statischen Methode init() in zf2 \ library \ Zend \ Mvc \ Application.php und laden Sie die Seite neu ... so jetzt finden Sie die Zeile, wo das Problem liegt. Dann können Sie einige Variablenwerte ausdrucken und herausfinden, was vor sich geht. – kay27

+0

Aber ich denke, ist nicht die Linie selbst, ist die Anwendung, die die Linie läuft, so dass das nicht zu viel bedeutet ... – Asur

1

Der Fehler könnte alles sein. Unter der Annahme, dass der gebuchte Code ausgeführt wird, unterdrückt er jedoch eine Fehlermeldung ohne die korrekte Konfiguration.

Versuchen Sie, die folgende Konfiguration zu local.config.php hinzuzufügen.

return [ 
    'errors'=> [ 
     'show_exceptions' => [ 
      'message' => true, 
      'trace' => true 
     ], 
    ], 
]; 

Wenn eine Ausnahme ausgelöst wird, und dass Zuhörer es holt, dann ist das $eventParams etwas, das Sie debuggen sollte.

Verwandte Themen