菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

菜菜鳥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.27github

(3)DocumentRoot:e:\Webweb

(4)e:\Web\zf2working\ 是我創建的一個學習ZF2的目錄,目的是與我其它的項目區分開sql

(5)Zend Framework 2.2.1數據庫

1、Zend Framework是什麼?

這個很少說了,Google 和 Baidu 一大推。apache

官方的說明: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+ 中不少的特性和函數,例如:namespaces, late static binding, lambda 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

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

(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\。最終個人目錄結構以下圖所示

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

有關虛擬主機的設置見下一個小節

(6)在 zf2-tutorial 目錄下有一個文件叫 composer.phar 這就是在線安裝的主要執行文件。打開dos窗口,切換到 zf2-tutorial 目錄執行 php composer.phar self-update 命令,執行結果以下圖

注意:因爲要使用到 PHP 的命令行,因此要將 php.exe 文件路徑添加到系統的 PATH 裏面,否則會報找不到 php.exe 錯誤

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

(7)當命令執行完成後接下來就是在線安裝 ZF2 了,在 zf2-tutorial 目錄下執行 php composer.phar install 命令,執行結果以下圖

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

上圖中有關「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 子目錄下。

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

至此 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,若是能夠看到如下頁面,恭喜你!成功了,哇哈哈哈

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

5、測試 .htaccess 文件

在瀏覽器中輸入 http://zf2-tutorial.localhost/1234 因爲 1234 這個文件不存在,若是您的 .htaccess 文件的設定是有效的話,應該能夠看到以下的顯示

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

若是您看到的是相似下圖顯示的標準 Apache 404 錯誤。

菜菜鳥Zend Framework 2 不徹底學習塗鴉(一)-- 安裝配置

那麼您在繼續教程以前必須修改 .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(); 

未完待續......謝謝

相關文章
相關標籤/搜索