菜菜鸟Zend Framework 2 不完全学习涂鸦(二)-- 类库共享
菜菜鸟Zend Framework 2 不完全学习涂鸦(二)-- 类库共享
上篇涂鸦介绍了 ZF2 的安装和配置。
这篇涂鸦介绍一下 ZF2 类库文件的共享
上篇涂鸦中介绍的”在线安装“和”手动安装“都是将 ZF2 的类库文件安装在”项目目录/vendor/“(在线安装)或者”项目目录/vendor/ZF2/“(手动安装)下。在实际的开发过程中可能会使用 ZF2 开发多个项目,是否可以让多个 ZF2 项目共享一个 ZF2 类库呢?当然可以!
说明:
1、我的 DocumentRoot 为 E:\Web
2、自定义虚拟主机 DocumentRoot 为 E:\Web\ZF2Working\zf2-tutorial\public
3、我在 e:\Web\ZF2Working 目录下新建了一个目录(ZF2Library)存放 ZF2 的类库文件,如下图所示
要设定公用 ZF2 类库,有三种方法,但我只成功了两种。
一、修改 php.ini 方法
将 ZF2 类库路径添加到 php.ini 的 include_path 变量中
1、打开 php.ini 文件
2、找到 Paths and Directories 段
3、修改 include_path 值
include_path = ".;PATH\TO\php\pear"
修改成
include_path = ".;PATH\TO\php\pear;E:\Web\ZF2Working\ZF2Library"
4、重启 Apache
这个方法我没有成功!有同学成功的话记得告诉我一下,谢谢。
二、修改 httpd.conf 文件
自定义一个环境变量 ZF2_PATH 到 httpd.conf 文件中
1、打开 httpd.conf 文件
2、在文件的最后添加一句
SetEnv ZF2_PATH "E:/Web/ZF2Working/ZF2Library"
3、保存 httpd.conf 并退出
4、重启Apache
三、修改虚拟主机配置(httpd-vhosts.conf)文件
在上一篇涂鸦中我定义了一个虚拟主机的配置
<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>
现在继续在这个基础上添加环境变量 ZF2_PATH
1、打开 httpd-vhosts.conf 文件
2、找到定义 zf2-tutorial.localhost 虚拟的段落
3、添加
SetEnv ZF2_PATH "E:/Web/ZF2Working/ZF2Library"
总的代码如下:
<VirtualHost *:80>
ServerName zf2-tutorial.localhost
DocumentRoot /path/to/zf2-tutorial/public
SetEnv APPLICATION_ENV "development"
SetEnv ZF2_PATH "E:/Web/ZF2Working/ZF2Library"
<Directory /path/to/zf2-tutorial/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
4、保存 httpd-vhosts.conf 文件并退出
5、重启 Apache
四、注意事项
1、注意路径大小写
如果在 Windows系统 下开发,线上环境是Linux等区分大小写的系统,那么在设定路径时最好注意大小写,这样不会产生上线后报路径错误。
2、下载的 ZF2 压缩包解压路径
下载的 ZF2 压缩包内部结构是
双击 ZendFramework-minimal-2.2.1 目录后显示
双击 library 目录后显示
我们就只要这个 Zend 目录就可以了
将这个 Zend 目录包含里面大量的子目录一起解压到事先建立好的 e:\Web\ZF2Working\ZF2Library 目录下即可
3、环境变量名 ZF2_PATH
我们自定义的环境变量是 ZF2_PATH,这个变量的值可以自己定义,但是 ZF2_PATH 这个变量名称不能自定义。
未完待续......谢谢