2008年06月23日
[PHP-ZF] 解決 ZF 在 Proxy 模式下無法正確解析 Controller Name 的問題
說明
因為要和客戶的內部網路連線,便透過 PieTTY 的 SSH Tunnels 模式來做 Proxy 。 但是這個方式卻讓 Zend Framework 出現了以下的錯誤訊息:
An error occurred with this request: Invalid controller specified (http:).
解決方式是修改 Zend Framework 的 Zend_Controller_Request_Http 這個類別。
先開啟 Zend/Controller/Request/Http.php ,並找到:
$requestUri = $_SERVER['REQUEST_URI'];
改為:
$requestUri = preg_replace(
'/^https?:\/\/' . $_SERVER['HTTP_HOST'] . '/i',
'',
$_SERVER['REQUEST_URI']
);
這樣就能避掉 Proxy 所帶來的問題了。
註 1 :這個方法的風險在於會修改原生的 ZF 程式碼,如果會用到 Subversion 來管理程式碼的話,要特別注意未來更新版本時可能會發生衝突的問題。
註 2 :未來版本應該會修正這個問題。
參考
ZF MVC is not compatible with apache + http protocol proxy requests
