
让Tomcat支持PHP
在负责一个采用JSP动态网页技术的网站时,刚好手头有PHP写的一部分功能,所以就很直接地想到让Tomcat支持PHP。Tomcat也是Apache出的,难道就只支持JSP吗?到底能否在Tomcat上用PHP呢?上网搜索了一番,很快有了第一个问题的答案:Tomcat可以支持CGI,如Perl(具体设置见附文)。但继续搜索,却迟迟无法找到让Tomcat使用PHP的方法,一般都是采取装Apache和Tomcat共存的方法来搭建所谓的支持PHP+JSP的Web平台。
当然,其实PHP本身也支持CGI方式的使用,所以就自己动手试了一试(在Windows *** 作系统上):先按照附文的做法让Tomcat支持CGI,然后再改webxml,在servlet-name为cgi的一段配置中加上:
<init-param>
<param-name>executable</param-name>
<param-value>php</param-value>
</init-param>
并把PHP安装路径加入Path,这样Tomcat就能运行到PHPexe了。重启Tomcat后,在WEB-INF目录下新建一个cgi目录,把php文件放在这里,然后访问时用虚拟映射出来的cgi-bin目录来访问这些PHP文件。
但是如果对PHP文件不加任何改动的话,可能会发现什么输出都没有。需要在PHP文件头部加一行,输出两个回车:
echo "\n\n";
原因不太清楚。可能在等待Content-type输入,或是Perl的cgi程序风格。
但这样配置,PHP(410以上版本)中$_REQUEST、$_GET、$_POST等变量就无法用了,只能从服务器变量或环境变量中获取QueryString了:$_SERVER["QUERY_STRING"]、$_ENV["QUERY_STRING"]。也许不支持表单的POST提交了……具体还没试过。
由于对Tomcat不熟悉,所以这些只是在现在方法上的小修小补,可能有好的做法,还希望大家不吝指教!
propertiesload(getClass()getResourceAsStream("/WEB-INF/classes/userNameproperties"));
试试这样写。
或者
propertiesload(getClass()getResourceAsStream("/userNameproperties"));
另外,这个/斜撇,不要写//两个。。。。。
SystemgetProperty("catalinahome") ,Tomcat 安装目录,一般是用来查找库 jar 的。
SystemgetProperty("catalinabase"),服务器配置目录,所有配置文件都在这里,你可以用一个catalinahome 来启动两个命令行来运行两个不同的 catalinabase 配置(前提你已经修改了配置文件保证它们的端口不会冲突);
当在 eclipse 里面运行时,多数情况下 catalinehome 还是 tomcat 目录,而 catalinabase 是 eclipse workspace 里面的一个目录,你现在需要拿到的应该是工作时的配置目录下的子目录,所以你应该用 catalinabase 当成根目录;比如,我想读取 tomcat user 文件,得到的结果相当于 ${catalinebase}/conf/tomcat-usersxml
TOMCAT是JSP的啊,你应该安装Apache吧~~
安装好 Apache后,把你的网页放到在Apache安装目录中的 htdocs目录里面就行了。
当然你也可以修改Apache的>
tomcat可以运行php,不过需要配置一下。
方法如下:
将php解压到tomcat的根目录下,将文件夹名字改为php
把phpexe所在的路径加入到path中
将phpini-development 复制一份。改名phpini
打开 extension_dir = "ext" 这个选项
修改cgiforce_redirect 为这样 cgiforce_redirect = 0
修改tomcat/conf/contextxml文件
将<Context >加上 privileged="true" 属性即:<Context privileged="true">
在<web-app>中加入
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>orgapachecatalinaservletsCGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>D:\tomcat\php\php-cgiexe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/phpbin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/phpbin/</url-pattern>
</servlet-mapping>
重启tomcat服务:
在webapps\ROOT\WEB-INF 下新建一个phpbin的文件夹
在下面新建一个indexphp
<php phpinfo();
Tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 24 和JSP 20 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
php简介
计算机编程语言(Hypertext Preprocessor)
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
可以运行的 不过要稍微配置下
将php解压到tomcat的根目录下,将文件夹名字改为php
把phpexe所在的路径加入到path中。
将phpini-development 复制一份。改名phpini
打开 extension_dir = "ext" 这个选项
修改cgiforce_redirect 为这样 cgiforce_redirect = 0
修改tomcat/conf/contextxml文件
将<Context >加上 privileged="true" 属性即:<Context privileged="true">
在<web-app>中加入
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>orgapachecatalinaservletsCGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>D:\tomcat\php\php-cgiexe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/phpbin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/phpbin/</url-pattern>
</servlet-mapping>
重启tomcat服务:
在webapps\ROOT\WEB-INF 下新建一个phpbin的文件夹
在下面新建一个indexphp
<php phpinfo();
SystemgetProperty("userdir")在tomcat下的路径
在哪里执行startupsh 路径就是pwd
例如 tomcat/bin/startupsh --------> tomcat
例如 /bin/startupsh --------> 假如在logs下执行,那么路径就是logs
以上就是关于tomcat支持php吗全部的内容,包括:tomcat支持php吗、将项目部署到tomcat后怎么获取new FileInputStream()里面的路径、Java如何获取tomcat的根目录的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)