2011-01-15 5 views
1

Ich habe eine Website vor einiger Zeit mit Zend und Smarty erstellt. Die Site wird auf einer virtuellen Maschine mit CentOS gehostet. Jetzt möchte ich eine ähnliche Seite erstellen, also habe ich einen anderen virtuellen Host, FTP-Benutzer usw. auf dem gleichen Rechner angelegt.Zend und Smarty Site Klon Problem

I die INI-Datei geändert, die die Pfade enthalten: paths.base =/var/www/html/new_path
paths.data =/var/www/html/new_path/data
paths.templates =/var/www/html/new_path/templates
paths.cache =/var/www/html/new_path/data/tmp/cache
paths.public =/var/www/html/new_path/public_html

Das Problem ist, dass irgendwie, wenn ich versuche, auf zend/loader.php zuzugreifen (ich versuche ein Datenbankobjekt zu laden), der Loader vom alten Pfad (/ var/www/html/oldp) benutzt wird ath/include/zend/loader.php), so kann ich natürlich nicht auf neue Objekte zugreifen, die ich für die neue Site erstelle ( Warnung: include_once (DatabaseObject/New.php) [function.include-once]: Fehler beim Öffnen des Streams: keine solche Datei oder ein Verzeichnis in/var/www/html/old_path /include/Zend/Loader.php auf Leitung 146

Warning: include_once() [function.include]: fehlgeschlagen opening ‚DatabaseObject/New.php 'für die Aufnahme (include_path ='.:/var/www/html/alter_pfad/include:/usr/share/pear/') in/var/www/html/alter_pfad /include/Zend/Loader.php auf Linie 146

Schwerwiegender Fehler: Die Klasse 'DatabaseObject_Chat' wurde nicht gefunden in/var/www/html/neuer_pfad /include/Controllers/ChatController.php on line 8 ).

Es sind keine anderen Pfade definiert. Caching ist deaktiviert. Es tritt auf verschiedenen Computern, Browsern usw. auf und ist daher kein lokales Problem (Restwert eines Some-Type).

Für alle Details einfach fragen ... Ich stecke fest.

Antwort

0

Zend_Loader untersucht Include-Verzeichnisse, die in Ihrer public/index.php definiert sind. Die include path muss richtig eingestellt sein, um sowohl die alten Verzeichnisse als auch die neuen zu enthalten. Notieren Sie sich die jeweilige Reihenfolge, die in Ihrem Include-Pfad angegeben ist.

Der Code in public/index.php sollte ähnlich der folgenden aussehen, vorausgesetzt, die Verwendung von ZF1:

<?php 
... 
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../../project_name/path_for_inclusion'), 
    get_include_path(), 
))); 
... 

Der Pfad enthalten kann auch in der .htaccess angepasst werden:

php_value include_path "/var/www/path:/var/www/second_path:/var/www/third" 

oder Sie können den Effekt im Allgemeinen ohne ZF-spezifischen Code erzielen:

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);