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



Posted by jaceju at 樂多Roodo! │11:09 │回應(0)Zend Framework
樂多分類:網路/3C 共同主題:PHP 程式設計 工具:加入樂多書籤編輯本文
Ads by Roodo!