簡介:在 web 開發中 PHP 一直占據著一席之地,無論是小型規模的 web 應用,還是像 Yahoo 這樣 的大型網站。PHP 和 Java 一直是以競爭對手的形式出現,如果我們能夠同時使用 PHP 和 Java,那麼這 種互相競爭的現狀就可能改變。把 PHP 的靈活性和 Java 的強大功能結合起來,開發 web 應用可能不再 像今天這麼復雜,而會變成一種享受。本文將介紹一種可以結合使用 PHP 和 Java 的方法,通過 PHP Integration Kit 讓 IBM 的開源服務器 WebSphere Application Server Community Edition 支持 PHP 腳本。通過學習本文,讀者可以掌握 PHP Integration Kit 的原理;文中的樣例說明這種技術的可行性 。
背景和工作原理
PHP是一種在web應用開發中非常受歡迎的腳本語言。當我們使用PHP作 為服務器端腳本時(本文將不會討論以命令行的方式運行PHP和使用PHP編寫桌面應用程序),需要運行在 Apache HTTP服務器或者Microsoft IIS這樣的web服務器上。雖然我們可以在Apache HTTP服務器上同時配 置PHP和JSP支持,但是需要將PHP和JSP請求分別轉發到相應的PHP引擎或者Java應用服務器,在PHP腳本和 JSP代碼之間沒有建立關系,也不能在一個HTML頁面中混合使用PHP腳本和JSP代碼。通過PHP Integration Kit for WebSphere® Application Server (WAS),Community Edition (CE),我們可以將PHP腳本集 成到Java™ 2 Enterprise Edition (J2EE)應用中,例如通過Container Managed Security (CMS) 來控制對PHP腳本的訪問權限,通過WAS CE的管理控制台來安裝/更新PHP應用,還可以通過Java Filter技 術來修飾包含PHP腳本的HTML頁面。您可以在IBM alphaWorks網站找到這個項目的最新信息,目前支持的 平台有Windows和Linux,不過現在這個項目還不能使用在產品環境中。
PHP Integration Kit通過 在Servlet容器中配置FastCGI filter,將PHP腳本請求轉發到PHP引擎。PHP Integration Kit提供了一個 launcher來調用PHP引擎。需要指出的是PHP Integration Kit並沒有重新構建一個PHP的引擎,而是需要 利用現有的PHP引擎(這個比較容易理解,因為PHP引擎是由PHP.net提供和維護的)。如果系統中安裝有 多個版本的PHP引擎,可以在web部署描述文件web.xml中對PHP引擎進行配置。圖1簡單說明了PHP腳本在 WASCE中的生命周期。
圖 1. PHP腳本在WASCE中的生命周期
部署: 為了讓PHP Integration Kit能夠運行PHP腳本,PHP應用需要通過一種特殊的方法來進 行打包和部署。下面將詳細描述具體的步驟,簡單來說,打包的方式需要遵從Java企業應用WAR模型的要 求。