Я пытаюсь установить 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, но:
Я не хочу делать локальную установку ZF2 ... Я хочу, чтобы общесерверная установка могла использовать мои компоненты Zend на всех моих доменах / поддоменах на моем сервере разработки.
Прежде чем использовать какой-либо процесс автоматической установки, я бы очень хотел понять этот процесс, сначала выполняя его вручную.
Очевидно, что что-то идет не так, когда я запускаю 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
файл довольно легко.