codeIgniter Module 模組擴充

codeIgniter 的mvc模式,要分別在Controllers,views,models下分別建立對應的程式,實際上程式都是有單位的存在的,一個部落格會有blog_controller blog_models blog_views..等等 mvc 的程式,但被分散在三個資料夾,當程式的單位不只有 blog 而已,越來越多時就變的不太好管理。

剛開始在官網wiki上看到 http://codeigniter.com/wiki/Modular_Extensions_-_HMVC/ 這個library,他引入一種 HMVC 的觀念,將原始資料夾結構增加了 Modules 資料夾,並在內部每個資料夾下都有個 mvc 的資料夾,稱之為 Hierarchical-Model-View-Controller模式,也就是階層式的 MVC 引入一種模組的概念,每個子功能都是一個模組,分別管理維護,互不影響運作。

但是當初為了專案擴充的需要,想讓模組內還有模組,就無法單純使用這個 Lib 來滿足,有對他核心做些簡單的修改,但是其實這個library幾乎把 codeIgniter 核心都覆寫過了,所以更新 ci 版本時應該會有一些問題,後來發現一套 http://codeigniter.com/wiki/Matchbox/ matchbox,似乎提供更完整的載入函式,可以指定要載入的模組,但沒實際使用過,但看起來也一段時間沒更新了,而 hmvc 甚至還搬家了, http://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc,蠻久沒有看過他的更新,但 ci 模組的擴充應該就這兩套較完整。

如果要用 modules ~也可以考慮使用 Kahana 看看,他是 codeigniter 的分支但是內建支援以模組為單位。

postfix relay access denied

開發環境用的是postfix,還沒仔細看過跟sendmail的關係,

今天要寄遇到問題,之前看log都沒專心看,今天專心看以後發現有些地方要注意,就可以在網路找到解法了,

log上會標示好幾行某封信相關的內容,主要可以看有包含to 跟 from那行後面會有一個狀態,

ex : dsn:5.7.1 ,stat=Service unavailable,這是我今天遇到的情況。

寄不出去再仔細看附近幾行會寫失敗的原因,例如reject: RCPT from localhost.localdomain…: 554 5.7.1 … relay access denied,

這就是主要拒絕的原因,再拿去google 就可以找到解法了。

例如這個情況是RELAY沒設好,參照這頁 http://www.oksan.tw/jason/blog/?p=13


1. /etc/postfix/main.cf :
mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access
relay_domains = $mydestination

2. /etc/postfix/access
.com.site.www   ACCEPT

3. postmap hash:/etc/postfix/access

參考這頁設完accept 就ok了。