简介:在 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模型的要 求。