php配置yii架構(轉)
yii具有很多當今web2.0開發所需要的特性。下邊是一個簡短列表。
?
MVC設計模式 :yii在WEB設計中採用經過驗證的技術,可以較好的把顯示與邏輯分離。
DAO,活動記錄:yii充許在對象方面建立資料庫模型,儲存長而重複語句。
整合jquery:最流行的javascript架構之一,苦於jquery可以定屈非常高效並且多功能的javascript介面
表單輸入驗證:yii可以很簡單啊安全的採集表單輸入。具有一整套驗證方法確保輸入資料的正確,還有輔助的方法與組件,在驗證失敗時,提示錯誤資訊。
WEB2.0組件:jquery提供的一套web2.0組件,可以自動完成輸入欄位,樹形視圖等等。
驗證與授權:yii內建驗證。通過分級的基本角色存取控制提供授權。
主題:可以立即更改yii應用的主題。
WEB服務:yii支援自動複雜的WSDL服務說明的產生和服務要求處理的管理.
國際化和本地化:yii支援資訊翻譯,日期時間格式化,數字格式化和介面本地化。
分層緩衝計劃:yii支援資料緩衝,頁面緩衝,片斷緩衝和動態內容。且緩衝的儲存介質可以在不改變應用代碼下被更改。
錯誤處理和日誌:錯誤被處理並且很人性化的顯示,日誌資訊可以實現分類,過濾,並可以路由到不同的目的地。
安全:yii提供許多安全措施保證WEB應用阻止網路攻擊。包括:防止跨站指令碼,防止偽跨網站請求,防止竄改cookie等等。
遵守xhtml:由yiit組件和命令列工具產生的程式碼遵守xhtml標準。
自動代碼產生:yii提供自動產生所需代碼的工具,比如:應用程式框架,CRUD應用等。
完全的物件導向:yii架構遵守嚴格的物件導向的程式設計模式。不定義任何全域函數或變數。所定義的類階層給予最在程度的可用性和可定製性。
支援第三方代碼:yii可以很好的支援第三方代碼。例如,可以在YII應用中使用PERA或者zend framework。
詳細的文檔:每一個方法或者屬性都有明確的說明。提供綜合指導與其他方面的指導。
擴充庫:yii提供由使用者撰寫的組件構成的擴充庫。
?
項目首頁是: www.yiiframework.com/
?
?
?
其實安裝yii就和安裝ZendFramework沒什麼區別,要麼在每個項目中包含yii,要麼在伺服器用php的include_path來包含。
?
解壓縮下載下來的檔案夾後,裡面有三個子檔案夾:demos(示範),framework(架構核心代碼),requirements(這個裡邊兒是檢測你的伺服器配置是否支援yii架構,主要是php擴充方面)
?
接下來就先進行測試吧,把裡面的requirements目錄單獨複製到你的web目錄下,然後運行 xxx.xxx.com/requirements,這樣會顯示類似如所示,
?
image
php_yii_requirements_1
?
PDO MySQL擴充模組 未通過 所有和資料庫相關的類 如果使用MySQL資料庫,這是必須的。
PDO PostgreSQL擴充模組 未通過 所有和資料庫相關的類 如果使用PostgreSQL資料庫,這是必須的。
APC擴充模組 未通過 CApcCache
SOAP擴充模組 未通過 CWebService, CWebServiceAction
?
我的伺服器目前有著四項沒有通過,出去PDO PostgreSQL這項我不需要,打算把其他三項給加上。
?
PDO MySQL的擴充需要在編譯php的時候增加 --with-pdo-mysql=/usr/local/mysql
SOAP需要增加 --enable-soap 和 --with-libxml-dir=/usr/local/libxml2
?
然後進行編譯安裝
?[Copy to clipboard]View Code BASH
?
1
?
?
?
./configure --prefix=/usr/local/php-5.2.9/ --enable-force-cgi-redirect --enable-mbstring=all --enable-mbregex --enable-mbstr-enc-trans --enable-versioning --enable-trans-sid --enable-ftp --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --with-soap=yes --with-curl=/usr/local/curl/ --with-zlib-dir=/usr/local/zlib/ --with-mcrypt=/usr/local/libmcrypt/ --with-gd=/usr/local/gd2 --with-jpeg-dir=/usr --with-freetype-dir=/usr/local/freetype --with-ttf --with-png-dir=/usr --with-mhash=/usr/local/mhash/ --with-dom=/usr/local/libxml2 --with-iconv=/usr/local/libiconv --with-openssl=/usr/local/openssl --with-pdo-mysql=/usr/local/mysql --enable-soap --with-libxml-dir=/usr/local/libxml2 && make && make install
?
由於之前進行過memcached的安裝,所以這裡再重新來一遍
?[Copy to clipboard]View Code BASH
?
1
2
3
4
?
?
?
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/memcached_phpclient3.0.4 --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir=/usr/local/zlib/
make
make install
?
安裝完成後顯示:
Installing shared extensions: /usr/local/php-5.2.9//lib/php/extensions/no-debug-non-zts-20060613/
?
下來修改php.ini
首先找到extension_dir,預設的應該是:extension_dir = "./"
現在修改成:extension_dir = "/usr/local/php//lib/php//extensions/no-debug-non-zts-20060613/"
然後再找到Dynamic Extensions,在下面加上:
extension=memcache.so
?
APC擴充模組兒比較麻煩:
它的下載地址是:http://pecl.php.net/package/apc
可以從下面的列表兒選擇你需要的來下載。我下載的是3.0.19 stable版本。
解壓縮後進入目錄,並執行如下命令:
?[Copy to clipboard]View Code BASH
?
1
2
3
4
?
?
?
/usr/local/php/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php/bin/php-config
make
make install
?
然後再次修改php.ini檔案,
加入:
extension=apc.so
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 32
apc.ttl = 600
apc.user_ttl = 600
apc.num_files_hint = 0
apc.write_lock = On
?
apc配置的一些說明:
apc.cache_by_default = On
是否預設對所有檔案啟用緩衝。 若設為Off並與以加號開頭的apc.filters指令一起用,則檔案僅在匹配過濾器時才被緩衝
?
apc.enabled = On
是否啟用APC,如果APC被靜態編譯進PHP又想禁用它,這是唯一的辦法。
?
pc.filters =
一個以逗號分隔的POSIX擴充Regex列表。
如果源檔案名稱與任意一個模式比對,則該檔案不被緩衝。
注意,用來匹配的檔案名稱是傳遞給include/require的檔案名稱,而不是絕對路徑。
如果Regex的第一個字元是"+"則意味著任何匹配運算式的檔案會被緩衝,如果第一個字元是"-"則任何匹配項都不會被緩衝。"-"是預設值,可以省略掉。
?
apc.ttl = 0
緩衝條目在緩衝區中允許逗留的秒數。0 表示永不逾時。建議值為7200~36000。設為 0 意味著緩衝區有可能被舊的緩衝條目填滿,從而導致無法緩衝新條目。
?
apc.user_ttl = 0
類似於apc.ttl,只是針對每個使用者而言,建議值為7200~36000。
?
apc.gc_ttl = 3600
緩衝條目在記憶體回收表中能夠存在的秒數
此值提供了一個安全措施,即使一個伺服器處理序在執行緩衝的源檔案時崩潰, 中.國.站長站
而且該源檔案已經被修改,為舊版本分配的記憶體也不會被回收,直到達到此TTL值為止。設為零將禁用此特性。
?
pc.max_file_size = 1M
禁止大於此尺寸的檔案被緩衝。
?
apc.num_files_hint = 1000
Web伺服器上可能被包含或被請求的不同源檔案的大致數量(建議值為1024~4096)。
如果你不能確定,則設為 0 ;此設定主要用於擁有數千個源檔案的網站。
?
apc.shm_segments = 1
為編譯器緩衝區分配的共用記憶體塊數量(建議值為1)。
如果APC耗盡了共用記憶體,並且已將apc.shm_size指令設為系統允許的最大值,你可以嘗試增大此值。
?
apc.shm_size = 30
每個共用記憶體塊的大小(以MB為單位,建議值為128~256)。
有些系統(包括大多數BSD變種)預設的共用記憶體塊大小非常少。
?
apc.write_lock = On
是否啟用寫入鎖。
?
重啟apache伺服器
然後在phpinfo中你就會看到apc的設定了。
?
至此,需要的yii的擴充已經配置完畢了,再重新整理一下兒剛才的測試網頁,就變成了:
?
image
php_yii_requirements_2
?
--------------------------------------------
好了,環境測試通過了,下面接著來測試demo吧。
?
把yii的demos目錄和framework目錄copy到你的web目錄下,並且訪問: xxx.xxx.com/demos/helloworld
?
在我這裡會顯示:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 137963997 bytes) in Unknown on line 0
不知道為什麼,但是後來我在php.ini中將上面的apc設定都給注釋掉,再重啟apache2 就沒問題了,會正確的顯示出:
Hello World
那就先不用apc擴充吧。
?
現將你的yii的framework目錄放到合適的位置,然後修改你的php.ini的include_path,重啟apache server
這個時候修改你的helloworld/index.php
?[Copy to clipboard]View Code PHP
?
1
2
3
?
?
[php] view plaincopy
?
? ? require_once(dirname(__FILE__).'/../../framework/yii.php'); ?
? ? #修改成: ?
? ? require_once('yii.php'); ?
?
這個時候兒如果還是可以正確的顯示出:Hello World
則代表你配置成功了。
?
好了,配置好了,如何初步的運用yii來寫程式。
請看這裡:
英文的: www.yiiframework.com/doc/guide/
中文的: www.yiiframework.com/doc/guide/zh_cn/index