菜菜鸟Zend Framework 2 不彻底学习涂鸦(一)-- 安装配置

声明:本人 PHPer 菜鸟一枚,Zend Framework 2 框架的菜菜鸟,刚学习 ZF2 不过 2 天。因为英语实在太破,因此一开始只能找网上 ZF2 中文教程,但不少教程都只说到 ZF2 安装与配置就结束了,没有了下文。看来只能硬着头皮拿着字典一点点去看官方教程了,如下是我作的一些学习涂鸦,学习过程仍是按照官方教程的顺序。才疏学浅,望大侠多多指教......谢谢。
--------------------------------------------------------------------------------------------------- php

说明: mysql

(1)ZF2 并不向下兼容 ZF1。因此 ZF1 开发的项目没法在 ZF2 中运行。 git

(2)我所使用的开发环境 Win7 + Xampp v.1.8.1,包含:Apache 2.4.3,PHP 5.4.7,MySQL 5.5.27 github

(3)DocumentRoot:e:\Web web

(4)e:\Web\zf2working\ 是我创建的一个学习ZF2的目录,目的是与我其它的项目区分开 sql

(5)Zend Framework 2.2.1 shell


1、Zend Framework是什么?

这个很少说了,Google 和 Baidu 一大推。 数据库

官方的说明:http://framework.zend.com/about/
api

简要总结: 浏览器

    一、PHP Web 应用程序框架;

    二、彻底面向对象(OOP);

    三、MVC(Model-View-Controller)开发模式;

    四、使用 PHP5.3+ 新功能和函数;

    五、松耦合组件;

    六、强大的类库;    

    七、强大的技术支持(Zend Technologies,PHPer 们几乎没人不知道 Zend Technologies 吧。);


2、Zend Framework 2 安装环境要求

Apache:

    一、打开 mod_rewrite 支持

        (1)打开 httpd.conf 文件

        (2)找到 #LoadModule rewrite_module modules/mod_rewrite.so 这一行

        (3)把这行左侧第一个字符(#)删除

        (4)保存修改后的 httpd.conf 文件并重启 Apache

    二、支持 .htaccess 文件

        要支持 .htaccess 文件有两种方法

        下面的操做假设 ZF2 开发项目保存在 e:\Web\zf2working\ 目录下

        方法一:直接修改 httpd.conf 文件

            (1)、打开 httpd.conf 文件

            (2)、找到 <Directory "e:/Web/zf2working"> 段,若是没有能够全新手动添加

            (3)、添加 AllowOverride All 或者将原有的 AllowOverride None 修改为 AllowOverride All

            (4)、保存修改后的 httpd.conf 文件并重启 Apache

        方法二:在 httpd-vhosts.conf 文件中修改

            (1)打开 httpd-vhosts.conf 文件,该文件通常在“Apache安装路径/conf/extra/”目录下

            (2)在文件底部手动添加如下信息

                <VirtualHost *:80>
                    DocumentRoot "E:/Web/ZF2Working/zf2-tutorial/public"
                    ServerName zf2-tutorial.localhost
                    # This should be omitted in the production environment
                    SetEnv APPLICATION_ENV development
                    <Directory "E:/Web/ZF2Working/zf2-tutorial/public">
                        DirectoryIndex index.php
                        AllowOverride All
                        Order allow,deny
                        Allow from all
                    </Directory>
                </VirtualHost>

            以上代码详细说明将在后面ZF2环境配置中详细介绍,这里只要注意加粗部分就能够了。

            (3)保存修改后的 httpd-vhosts.conf 文件并重启 Apache


PHP:

    一、版本要在 5.3.x 以上(包含 5.3.x)

    因为 ZF2 采用了 PHP5.3+ 中不少的特性和函数,例如:namespaceslate static bindinglambda functions and closures 因此要求 PHP 版本必须为 5.3 以上(含 5.3)

    二、打开 openssl 支持(可选)

    这个要说一下,在接下来的安装过程当中会介绍两种安装方式:(1)在线安装;(2)手动安装,若是采用“在线安装”那么 openssl 须要打开,否则安装会失败,若是是“手动安装”openssl 开不开就无所谓了。

        (1)打开 php.ini 文件

        (2)找到 ;extension=php_openssl.dll这一行

        (3)将这行左侧第一个字符(;)去掉

        (4)保存修改过的 php.ini 文件并重启 Apache

    三、打开 PDO MySQL 数据库支持(可选)

    PHP默认是打开了 Sqlite 支持的,若是须要使用到 MySQL 就须要打开 PDO 的 MySQL 数据库支持

        (1)打开 php.ini 文件

        (2)找到 ;extension=php_pdo_mysql.dll这一行

        (3)将这行左侧第一个字符(;)去掉

        (4)保存修改过的 php.ini 文件并重启 Apache


MySQL:

    没有特别需求,若是项目不牵涉到数据库,MySQL 甚至能够不装。也能够根据项目要求使用其它的数据库,例如:Sqlite 等。


3、安装Zend Framework 2

作完以上环境设置之后,本篇中最重要的部分来了!

ZF2 有两种安装方式:一种是“在线安装”另外一种是“手动安装”。

一、在线安装

所谓的“在线安装”就是使用托管在 github 上的 ZendSkeletonApplication (Skeleton在字典里解释为:骨架,骨骼。因此能够叫作“Zend应用程序骨架”或者能够理解为“Zend应用程序模板”)来构建咱们本身的应用程序。

(1)在浏览器中打开 https://github.com/zendframework/ZendSkeletonApplication

(2)点击图片右下角的 zip 按钮(上图画红圈的按钮),下载 ZendSkeletonApplication,下载的文件名相似 ZendSkeletonApplication-master.zip。这就是咱们构建本身应用程序的基础,也能够理解成咱们应用程序的一个初始化的空白模板。

(3)将下载的压缩包解压,产生 ZendSkeletonApplication-master 文件夹

(4)将 ZendSkeletonApplication-master 文件夹复制到 e:\Web\zf2working\ 目录下,造成 e:\Web\zf2working\ZendSkeletonApplication-master\ 的结构。e:\Web\zf2working\ 是我在学习ZF2时定义的一个目录,您能够根据项目的要求或本身的喜爱修改目录,但这个目录必须能够被 Apache 访问到。

(5)将 ZendSkeletonApplication-master 文件夹改名为您的项目名称,在这里我将 ZendSkeletonApplication-master 文件夹改名为:zf2-tutorial,既把 e:\Web\zf2working\ZendSkeletonApplication-master\ 修改成 e:\Web\zf2working\zf2-tutorial\。最终个人目录结构以下图所示

有关虚拟主机的设置见下一个小节

(6)在 zf2-tutorial 目录下有一个文件叫 composer.phar 这就是在线安装的主要执行文件。打开dos窗口,切换到 zf2-tutorial 目录执行 php composer.phar self-update 命令,执行结果以下图

注意:因为要使用到 PHP 的命令行,因此要将 php.exe 文件路径添加到系统的 PATH 里面,否则会报找不到 php.exe 错误

(7)当命令执行完成后接下来就是在线安装 ZF2 了,在 zf2-tutorial 目录下执行 php composer.phar install 命令,执行结果以下图


上图中有关“git”和"hg"报错的信息没有什么关系,不会影响到 ZF2 的安装。

至此 ZF2 的“在线安装”所有结束。下面有几点作一个说明

(1)“在线安装”过程所花时间的长短取决于您当地的网络状况;

(2)ZendSkeletonApplication、composer 和 Zend Framework 2 这三者之间是什么关系?ZendSkeletonApplication 是 Zend 应用程序骨架(或者是 Zend 应用程序模板),ZendSkeletonApplication 经过 composer 来解决依赖性的问题,而 ZendSkeletonApplication 所依赖的是 Zend Framework 2。

(3)php composer.phar self-update 这个命令干了什么?该命令主要是检测 ZendSkeletonApplication 最新依赖性的检测和升级

(4)php composer.phar install 这个命令干了什么?该命令装了 Zend Framework 2。这个命令在项目目录下的 vendor 目录下安装了ZF2的库文件和一些辅助文件,同时在项目目录下添加了一个 composer.lock 文件。

(5)php composer.phar install 报错 “The process timed out.”怎么办?若是你获得如下结果

[RuntimeException]
      The process timed out.

说明您的网速不给力,须要用如下命令

COMPOSER_PROCESS_TIMEOUT=5000 php composer.phar install


二、手动安装

“手动安装”和“在线安装”只是在最后一步不一样,“手动安装”的最后一步不是用命令行方式下载 ZF2,而是须要你手动将ZF2库添加到 ZendSkeletonApplication 目录中。

“手动安装”的前5步同“在线安装”的前5步

(6)下载ZF2,浏览器打开http://framework.zend.com/downloads/latest 选择 Zend Framework 2.2.1 Minimal 

(7)解压 ZendFramework-minimal-2.2.1.zip 文件到项目目录里的 vendor 子目录下的 ZF2 子目录下。


至此 ZF2 的“手动安装”所有结束。


4、虚拟主机的设定与配置

这个虚拟主机是否须要配置看我的开发的习惯,通常来讲有个虚拟主机相对来讲开发比较方便。官方教程上是创建了一个 zf2-tutorial.localhost 的虚拟主机,那咱们也设定一个虚拟主机。

因为 ZF2 框架有一个惟一入口的脚原本接受外网的访问请求,既 public/index.php。在个人例子中就是:e:\Web\zf2working\zf2-tutorial\public\index.php,因此我要将 e:\Web\zf2working\zf2-tutorial\public\ 做为虚拟主机的目录

(1)打开 httpd-vhosts.conf 文件,该文件通常在“Apache安装路径/conf/extra/”目录下

(2)在文件底部添加如下代码

<VirtualHost *:80>
    DocumentRoot "E:/Web/zf2Working/zf2-tutorial/public"
    ServerName zf2-tutorial.localhost
    # This should be omitted in the production environment
    SetEnv APPLICATION_ENV development
    <Directory "E:/Web/ZF2Working/zf2-tutorial/public">
        DirectoryIndex index.php
        AllowOverride All        
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

(3)保存 httpd-vhosts.conf 文件

(4)打开 hosts 文件,该文件路径:C:\Windows\System32\drivers\etc

添加如下代码至文件底部

127.0.0.1 zf2-tutorial.localhost

保存并退出 hosts 文件

(5)重启 Apache

好了,ZF2 的全部安装和配置所有结束,看看本身的成果吧

在浏览器中输入 zf2-tutorial.localhost,若是能够看到如下页面,恭喜你!成功了,哇哈哈哈


5、测试 .htaccess 文件

在浏览器中输入 http://zf2-tutorial.localhost/1234 因为 1234 这个文件不存在,若是您的 .htaccess 文件的设定是有效的话,应该能够看到以下的显示


若是您看到的是相似下图显示的标准 Apache 404 错误。

那么您在继续教程以前必须修改 .htaccess 文件。若是您使用的是 IIS + Rewrite 模式,按以下修改 .htaccess 文件

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php [NC,L]


6、错误报告配置(可选)

还记得上文中在设定虚拟主机时添加的代码么?

<VirtualHost *:80>
    DocumentRoot "E:/Web/zf2Working/zf2-tutorial/public"
    ServerName zf2-tutorial.localhost
    # This should be omitted in the production environment
    SetEnv APPLICATION_ENV development
    <Directory "E:/Web/ZF2Working/zf2-tutorial/public">
        DirectoryIndex index.php
        AllowOverride All        
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

在代码中有一行

SetEnv APPLICATION_ENV development
这行说明目前咱们将整个项目的模式设定为”开发模式(developement)“,在这个模式下 PHP 会向浏览器输出全部的错误信息,方便咱们的开发和调试。

注意:项目正式上线以前要将这个模式删除,以避免形成信息泄露和安全漏洞。

除了在虚拟主机的配置文件中设定开发模式以外,还须要在项目入口文件中作一点额外的设定。

打开 e:\web\zf2working\zf2-tutorial\public\index.php ,默认的代码以下

<?php
/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
chdir(dirname(__DIR__));

// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
}

// Setup autoloading
require 'init_autoloader.php';

// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
在文件顶部添加如下代码
/**
 * Display all errors when APPLICATION_ENV is development.
 */
if ($_SERVER['APPLICATION_ENV'] == 'development') {
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
}
最终的代码以下:
<?php
/**
 * Display all errors when APPLICATION_ENV is development.
 */
if ($_SERVER['APPLICATION_ENV'] == 'development') {
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
}

/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
chdir(dirname(__DIR__));

// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
}

// Setup autoloading
require 'init_autoloader.php';

// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();


未完待续......谢谢

相关文章
相关标签/搜索