Не удалось загрузить Zend / Application.php при переносе проекта из win7 в Ubuntu - PullRequest
0 голосов
/ 07 января 2011

У меня есть проект, работающий в win7 (с установленным xampp - Zend Framework 1.10.3).Но когда я переместил его в Ubuntu, у меня возникла проблема.Моя структура проекта:

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

Вот мой 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();

А вот мой 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

СВ этих конфигурациях у меня нет проблем с запуском моего проекта на windows (с установленным xampp).

В Ubuntu у меня был установлен xampp, следуя этому руководству:

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

В соответствии с этимруководство, я создал символическую ссылку (если я не ошибся) для связывания моей папки / home / truong / webdev с папкой / opt / lampp / htdocs (с "truong").мое имя ^ _ ^) Затем я переместил свой проект в / home / truong / webdev.После этого я запускаю свой проект из браузера ULR: localhost / webdev / myProject , и у меня была эта ошибка:

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

Похоже, что система не смогла найти мою библиотеку /Папка Zend.

Мне было интересно, следует ли мне вручную устанавливать путь включения для моей библиотеки Zend в php.ini, но потом я подумал, что это не нужно, потому что он установлен в index.php

* 1027.*

Я много раз искал в Интернете, но ничего не нашло.Пожалуйста, помогите мне решить эту проблему ... Большое спасибо.PS: я прошу прощения за мой плохой английский.quangtruong1985

Сообщений: 1 Регистрация: Четверг 06, 2011 16:24

Ответы [ 4 ]

1 голос
/ 07 января 2011

Кажется, что ваш путь к библиотеке на самом деле не добавлен к вашему пути включения. Вы можете проверить это через print_r(get_include_path());

В прошлом у меня были некоторые проблемы с realpath, так что, возможно, это является причиной вашей проблемы. Вы можете попробовать

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

чтобы избежать реального пути

0 голосов
/ 14 февраля 2012

Моя директива php.ini была такой

include_path = ".; C: \ xampp \ php \ PEAR; C: \ zend \ zendframework1116; C: \ zend \ zendframework1116 \ library;"

удаление; в конце пути решена моя проблема

0 голосов
/ 20 января 2012

Можете ли вы проверить, комментируется ли путь включения для библиотеки в файле php.ini,

; include_path = ".; C: \ php \ include; d: .. \ zendframework \ library"

если прокомментирован, удалите точку с запятой и перезапустите сервер.

0 голосов
/ 04 декабря 2011

Похоже, вы закомментировали директиву include в вашем application.ini.Вот этот: ;includePaths.library = APPLICATION_PATH "/../library".Если вы удалите «;»в начале строки это должно сработать.

На вашем компьютере с Windows вы добавили путь к Zend Framework в php.ini?Если это так, то это, вероятно, причина того, что он не будет работать в Linux.

Вам также нужно учитывать следующее: если у вас установлена ​​XAMPP на вашем компьютере с Windows, PEAR устанавливается по умолчанию, иZend Framework поставляется с ним.

РЕДАКТИРОВАТЬ: немного грамматики.

...