关闭

安装ZF2_Skeleton_ Application和ZFTOOL

标签: PHPphp5Web开发
1358人阅读 评论(0) 收藏 举报
分类:

环境:XAMPP for Linux 1.8.3(php5.5.3  Apache/2.4.4) CentOS6 x86_64

ZF2.2.5 

ZendSkeletonApplication-zf-release-2.1.0-83

1 下载并安装XAMPP

2 下载ZendSkeletonApplication

3 使用命令安装

3.1 解压到你所要的的目录,这里使用的是文档中用的文件名zf2-turorial

3.2 目录要apache能够有权限访问到,这里放到htdocs目录下

一般要给权限755

3.3 创建虚拟主机

这里参照文档中的配置:

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /path/to/zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory /path/to/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

3.4 参照文档,执行命令

php composer.phar self-update
php composer.phar install

3.5 在此过程中
self-update更新的composer.phar,更多信息参照composer.phar文档
然后install进行安装时,检查依赖后,会下载ZendFramework

查看vendor目录可以看到,目录下多了zendframework、bin、composer、autoload.php

具体它是怎么找到zf2 的大家查一下文档。

3.6 运行

4 手动安装

这里不使用命令安装,把ZF2解压到外面,看vendor下面的说明意思是第三方库一般放在vendor下面。

README.md

This vendor/ directory is where third-party modules should be installed.

这里放在了网站外面。这时就要手动指定ZF2所在的位置

根据文档设定include_path和环境变量。

4.1 include_path在php.ini中设定

4.2 环境变量可以在apache的虚拟主机中使用SetEnv设定,也可以在操作系统中设定,如系统级的/etc/profile等linux下设定环境变量的方法。

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /path/to/zf2-tutorial/public
    SetEnv ZF2_PATH "/path/to/ZF2/library"
    SetEnv APPLICATION_ENV "development"
    <Directory /path/to/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

4.3 重启apache 并运行

这里可以看一下init_autoloader.php是如何查找ZF2的

if (file_exists('vendor/autoload.php')) {
    $loader = include 'vendor/autoload.php';
}

$zf2Path = false;

if (is_dir('vendor/ZF2/library')) {
    $zf2Path = 'vendor/ZF2/library';
} elseif (getenv('ZF2_PATH')) {      // Support for ZF2_PATH environment variable or git submodule
    $zf2Path = getenv('ZF2_PATH');
} elseif (get_cfg_var('zf2_path')) { // Support for zf2_path directive value
    $zf2Path = get_cfg_var('zf2_path');
}

if ($zf2Path) {
    if (isset($loader)) {
        $loader->add('Zend', $zf2Path);
    } else {
        include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
        Zend\Loader\AutoloaderFactory::factory(array(
            'Zend\Loader\StandardAutoloader' => array(
                'autoregister_zf' => true
            )
        ));
    }
}

if (!class_exists('Zend\Loader\AutoloaderFactory')) {
    throw new RuntimeException('Unable to load ZF2. Run `php composer.phar install` or define a ZF2_PATH environment variable.');
}

上面的if else语句标示了不使用命令手动配置查找ZF2的过程。

注意:安装过程注意查看文档,和所下载包里面的INSTALL README等说明文件。

至此手动安装(vendor下不含zendframework)的程序的目录结构如下:

zf2-tutorial2
|-- composer.json
|-- composer.phar
|-- config
|   |-- application.config.php
|   `-- autoload
|       |-- global.php
|       |-- local.php.dist
|       `-- README.md
|-- data
|   `-- cache
|-- init_autoloader.php
|-- LICENSE.txt
|-- module
|   `-- Application
|       |-- config
|       |   `-- module.config.php
|       |-- language
|       |   |-- ar_JO.mo
|       |   |-- ar_JO.po
|       |   |-- ar_SY.mo
|       |   |-- ar_SY.po
|       |   |-- cs_CZ.mo
|       |   |-- cs_CZ.po
|       |   |-- de_DE.mo
|       |   |-- de_DE.po
|       |   |-- en_US.mo
|       |   |-- en_US.po
|       |   |-- es_ES.mo
|       |   |-- es_ES.po
|       |   |-- fr_CA.mo
|       |   |-- fr_CA.po
|       |   |-- fr_FR.mo
|       |   |-- fr_FR.po
|       |   |-- it_IT.mo
|       |   |-- it_IT.po
|       |   |-- ja_JP.mo
|       |   |-- ja_JP.po
|       |   |-- nb_NO.mo
|       |   |-- nb_NO.po
|       |   |-- nl_NL.mo
|       |   |-- nl_NL.po
|       |   |-- pl_PL.mo
|       |   |-- pl_PL.po
|       |   |-- pt_BR.mo
|       |   |-- pt_BR.po
|       |   |-- ru_RU.mo
|       |   |-- ru_RU.po
|       |   |-- sl_SI.mo
|       |   |-- sl_SI.po
|       |   |-- tr_TR.mo
|       |   |-- tr_TR.po
|       |   |-- zh_CN.mo
|       |   |-- zh_CN.po
|       |   |-- zh_TW.mo
|       |   `-- zh_TW.po
|       |-- Module.php
|       |-- src
|       |   `-- Application
|       |       `-- Controller
|       |           `-- IndexController.php
|       `-- view
|           |-- application
|           |   `-- index
|           |       `-- index.phtml
|           |-- error
|           |   |-- 404.phtml
|           |   `-- index.phtml
|           `-- layout
|               `-- layout.phtml
|-- public
|   |-- css
|   |   |-- bootstrap.css
|   |   |-- bootstrap.min.css
|   |   |-- bootstrap-theme.css
|   |   |-- bootstrap-theme.min.css
|   |   `-- style.css
|   |-- fonts
|   |   |-- glyphicons-halflings-regular.eot
|   |   |-- glyphicons-halflings-regular.svg
|   |   |-- glyphicons-halflings-regular.ttf
|   |   `-- glyphicons-halflings-regular.woff
|   |-- img
|   |   |-- favicon.ico
|   |   `-- zf2-logo.png
|   |-- index.php
|   `-- js
|       |-- bootstrap.js
|       |-- bootstrap.min.js
|       |-- html5shiv.js
|       |-- jquery-1.10.2.min.map
|       |-- jquery.min.js
|       `-- respond.min.js
|-- README.md
`-- vendor
    |-- README.md
    `-- ZF2
完。

续:安装ZFTOOL

手动安装,下载并解压,根据文档[1][2]我放到vendor目录下。

.
|-- apache2
|-- bin
|-- build
|-- cgi-bin
|-- docs
|-- error
|-- etc
|-- htdocs
|   |-- conf
|   |-- xampp
|   `-- zf2-tutorial2
|-- icons
|-- img
|-- include
|-- info
|-- lib
|-- libexec
|-- licenses
|-- logs
|-- man
|-- manual
|-- modules
|-- mysql
|-- pear
|-- php
|-- phpmyadmin
|-- proftpd
|-- sbin
|-- share
|-- temp
|-- var
`-- ZendFramework225
    |-- bin
    |-- library
    |   `-- Zend
    `-- resources
查看zf.php为可执行文件。

在vendor下运行。zf.php version 出现了两个问题。第一个是找不到ZF,另外是找不到autoload.php。

对于ZF,上面设置ZF2_PATH是在apache配置文件中设置的,所以使用apache访问页面没问题。但是ZFTOOL却访问不到。

另外,看一下zf.php.

$basePath = getcwd();

ini_set('user_agent', 'ZFTool - Zend Framework 2 command line tool');

// load autoloader
if (file_exists("$basePath/vendor/autoload.php")) {
    require_once "$basePath/vendor/autoload.php";
} elseif (file_exists("$basePath/init_autoload.php")) {
    require_once "$basePath/init_autoload.php";
} elseif (\Phar::running()) {
    require_once __DIR__ . '/vendor/autoload.php';
} else {
    echo 'Error: I cannot find the autoloader of the application.' . PHP_EOL;
    echo "Check if $basePath contains a valid ZF2 application." . PHP_EOL;
    exit(2);
}
寻找的是当前目录下的autoload.php和init_autoload.php。我上面的程序是手动安装的,根目录下只有init_autoloader.php。

所以要解决这两个问题,

首先修改init_autoload.php为init_autoloader.php

其次设置环境变量。我这里没有设置系统的环境变量,而是在init_autoloader.php里设置环境变量。这样ZFTOOL在访问init_autoloader.php的时候就执行了添加了环境变量。

putenv("ZF2_PATH=/opt/lampp/ZendFramework225/library");
第三,在zf2-tutorial2根目录下运行zf.php,我这里使用绝对路径

/opt/lampp/bin/php /opt/lampp/htdocs/zf2-tutorial2/vendor/ZFTool/zf.php version
结果:

ZFTool - Zend Framework 2 command line Tool
The application in this folder is using Zend Framework 2.2.5
完。

参照:

http://framework.zend.com/manual/2.0/en/ref/installation.html

http://framework.zend.com/manual/2.0/en/user-guide/skeleton-application.html

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:167978次
    • 积分:2950
    • 等级:
    • 排名:第11893名
    • 原创:116篇
    • 转载:34篇
    • 译文:3篇
    • 评论:10条
    最新评论