Назад | Перейти на главную страницу

Установка и настройка Zend Framework 2 на уровне сервера [Ubuntu] и тестовое использование ZendSkeletonApplication

Я пытаюсь установить ZF2 для всех моих поддоменов сразу (Ubuntu 12.04).

ZF2 только что выпустил свою первую стабильную версию, поэтому я хотел установить ее на свой сервер разработки и, наконец, запачкать руки.

Я скачал ZF2 и разархивировал файлы в / var / ZF2 / (который теперь содержит Zend / [все компоненты]).

Затем я отредактировал /etc/php5/apache2/php.ini и добавил путь к файлам ZF2:

include_path = ".:/var/ZF2"

Затем я загрузил ZendSkeletonApplication и разархивировал его в / var / www / скелет.

Я знаю, что предлагается composer.phar для установки приложения ZF2, но:

Очевидно, что что-то идет не так, когда я запускаю ZendSkeletonApplication, и при нажатии на следующий URL-адрес я получаю следующее:

http://www.myDevServer.com/skeleton/public/

Fatal error: Uncaught exception 'RuntimeException' with message
'Unable to load ZF2. Run `php composer.phar install` or define 
a ZF2_PATH environment variable.' 
in /var/www/skeleton/init_autoloader.php:48 Stack trace: #0 
/var/www/skeleton/public/index.php(9): include() #1 {main} 
thrown in /var/www/skeleton/init_autoloader.php on line 48

Я бегло просмотрел документы, руководства и тому подобное, но прямого ответа на такую ​​конфигурацию нет.

В официальном документе, в (очень короткой) главе об установке, я вижу ссылку на добавление пути включения в PHP. Но нет примера ...

http://zf2.readthedocs.org/en/latest/ref/installation.html

Если у вас есть доступная копия Zend Framework, ваше приложение должно иметь доступ к классам фреймворка, находящимся в папке библиотеки. Хотя есть несколько способов добиться этого, ваш PHP include_path должен содержать путь к библиотеке Zend Framework.

Но потом, когда я перехожу к главе "Начало работы", все composer.phar и ничего больше...

http://zf2.readthedocs.org/en/latest/user-guide/skeleton-application.html

Я не системный администратор, а просто энтузиаст Zend. Я почти уверен, что эта проблема PEBKAC может быть очевидна для тех, кто уже использовал предыдущие бета-версии ZF2. Спасибо, что помогли мне.


РЕДАКТИРОВАТЬ:

Проблема была решена благодаря Дэниелу М.

Все, что требовалось - это просто настроить ZF2_PATH в httpd.conf.

SetEnv ZF2_PATH /var/ZF2

Я также удалил ссылку include_path в php.ini, и все работает нормально. Так что я понятия не имею, почему Zend предложил включить его в свои официальные документы.

Вы также можете использовать pyrus.phar для установки. Прочтите информацию на http://packages.zendframework.com/ для общесистемной установки.

Проверьте init_autoloader.php в базовом каталоге вашего приложения:

// Support for ZF2_PATH environment variable or git submodule
if (($zf2Path = getenv('ZF2_PATH') ?: (is_dir('vendor/ZF2/library') ? 'vendor/ZF2/library' : false)) !== false) {
    if (isset($loader)) {
        $loader->add('Zend', $zf2Path . '/Zend');
    } else {
        include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
        Zend\Loader\AutoloaderFactory::factory(array(
            'Zend\Loader\StandardAutoloader' => array(
                'autoregister_zf' => true
            )
        ));
    }
}

Самый простой способ - установить ZF2_PATH env var. Если вы используете веб-сервер Apache, все, что вам нужно сделать, это mod_env. Вы можете создать .htaccess файл, который устанавливает переменную.

Если он по-прежнему не запускается, вы можете отладить init_autoloader.php файл довольно легко.