2011-01-07 1 views
0

J'ai un projet exécuté dans win7 (avec xampp installed - zend framework 1.10.3). Mais quand je l'ai déplacé vers Ubuntu, j'ai eu un problème. Ma structure du projet est:Impossible de charger Zend/Application.php lors du déplacement du projet de win7 vers Ubuntu

Myproject 
    application 
    library 
     Zend 
    include 
     application.ini 
    etc... 
    index.php 

Voici mon index.php:

<?php 

// Define path to application directory 
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application')); 

// Define application environment 
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

define('APP_ROOT', realpath(dirname(dirname(__FILE__)))); 

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(), 
))); 

require_once 'include/constant.inc.php'; 
require_once('include/class.phpmailer.php'); 

// set constant in Zend_Registry 
//require_once 'Zend/Registry.php'; 
//Zend_Registry::set('const', $cfg); 

/** Zend_Application */ 
require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run 
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/../include/application.ini' 
); 
$application->bootstrap() 
      ->run(); 

Et voici mon include/application.ini:

[production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
phpSettings.date.timezone = "Europe/London" 
;includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "" 

;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
;resources.frontController.params.displayExceptions = 0 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = "" 

autoloaderNamespaces.Zendex = "Zendex_" 


resources.db.adapter = PDO_MYSQL 
resources.db.params.host = localhost 
resources.db.params.username = root 
resources.db.params.password = 
resources.db.params.dbname = qtcms 
resources.db.params.charset = "utf8" 


resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
resources.view[] = 
;resources.layout.layout = "layout" 
admin.resources.layout.layout = "admin" 
resources.view.doctype = "XHTML1_STRICT" 
resources.view.helperPath = APPLICATION_PATH "/helpers/views/" 
resources.view.helperPathPrefix = "Zend_View_Helper_" 
;resources.view.params.default.basePath       = APPLICATION_PATH "/layouts/default/" 
;resources.view.params.default.layout        = "layout" 
;resources.view.params.default.layoutPath       = APPLICATION_PATH "/layouts/default/default/" 

;resources.view.params.admin.basePath       = APPLICATION_PATH "/layouts/admin/" 
;resources.view.params.admin.layout        = "layout" 
;resources.view.params.admin.layoutPath       = APPLICATION_PATH "/layouts/admin/default/" 



[staging : production] 

[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

Avec ces configurations, je pas de problème pour faire fonctionner mon projet sur Windows (avec xampp a été installé).

En ubuntu, j'avais xampp installé suivant ce guide:

http://humanlanguage.wordpress.com/2006/12/03/install-xampp-on-ubuntu/ 

Selon cette orientation, j'ai créé un lien symbolique (si je ne trompe) pour relier mon /home/truong/webdev dossier avec /opt/lampp/htdocs dossier (avec "truong" est mon nom^_ ^) Puis j'ai déplacé mon projet à/home/truong/webdev. Après cela, je lancer mon projet de navigateur ULR: localhost/webdev/myProject et j'ai eu cette erreur:

Warning: require_once(Zend/Application.php) [function.require-once]: failed to open stream: No such file or directory in /home/truong/webdev/qtcms/index.php on line 28 

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Application.php' (include_path=':.:/opt/lampp/lib/php') in /home/truong/webdev/qtcms/index.php on line 28 

On dirait que le système n'a pas pu trouver mon dossier de bibliothèque/Zend.

je me suis demandé que dois-je configurer le chemin d'inclusion pour ma bibliothèque Zend php.ini manuellement, mais je pensais que c'était pas neccessary, parce que je l'avais mis dans index.php

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
      realpath(APPLICATION_PATH . '/../library'), 
      get_include_path(), 
))); 

J'ai cherché à plusieurs reprises sur Internet mais rien trouvé utile. S'il vous plaît aidez-moi à résoudre ce problème ... Merci beaucoup. ps: mon excuse pour mon mauvais anglais. quangtruong1985

Messages: 1 Inscrit le: Jeu Jan 06, 2011 16:24

+2

avez-vous vérifié les autorisations/propriétaire pour le dossier de la bibliothèque? – opHASnoNAME

+0

Définir l'autorisation pour les dossiers a résolu le problème. Merci beaucoup. –

Répondre

1

Il semble que votre chemin de la bibliothèque n'est pas réellement ajouté à votre chemin d'inclusion. vous pouvez vouloir vérifier cela via print_r(get_include_path());

J'ai eu quelques problèmes avec realpath dans le passé, peut-être que cela cause votre problème. Vous pouvez essayer

set_include_path(implode(PATH_SEPERATOR, array(
    dirname(__FILE__) . '/library', 
    get_include_path(), 
))); 

pour éviter realpath

0

On dirait que vous avez commenté la directive include dans votre application.ini. C'est celui-ci: ;includePaths.library = APPLICATION_PATH "/../library". Si vous supprimez le ';' au début de la ligne, ça devrait marcher.

Sur votre machine Windows, avez-vous ajouté le chemin d'accès à Zend Framework à php.ini? Si c'est le cas, c'est probablement la raison pour laquelle cela ne marchera pas sur Linux.

Vous devez également prendre en compte les éléments suivants: si vous avez installé XAMPP sur votre machine Windows, PEAR est installé par défaut et le framework zend est livré avec.

EDIT: Une certaine grammaire.

0

Pouvez-vous vérifier si le chemin d'inclusion pour la bibliothèque dans le fichier php.ini est commenté,

; include_path = "c:. \ Php \ includes; d: .. \ zendframework \ bibliothèque"

si vous avez commenté, supprimez le point-virgule et redémarrez le serveur.

0

Ma php.ini était comme ça

include_path = "; C:. \ Xampp \ php \ PEAR; C: \ zend \ zendframework1116; C: \ zend \ zendframework1116 \ bibliothèque;"

enlèvement; à la fin du chemin a résolu mon problème

Questions connexes