jetty服务器运行php代码

jetty服务器运行php代码,php,jetty,Php,Jetty,我想配置jetty以运行PHP文件,但到目前为止还没有成功。我的EclipseIDE中安装了Jetty WTP工具 当我启动Jetty服务器时。我得到了异常:java.lang.ClassNotFoundException org.mortbay.servlet.CGI:org.mortbay.servlet.CGI和javax.servlet.UnavailableException:org.mortbay.servlet.CGI。我在WebContent文件夹下放了一个简单的php文件(in

我想配置jetty以运行PHP文件,但到目前为止还没有成功。我的EclipseIDE中安装了Jetty WTP工具

当我启动Jetty服务器时。我得到了异常:java.lang.ClassNotFoundException org.mortbay.servlet.CGI:org.mortbay.servlet.CGIjavax.servlet.UnavailableException:org.mortbay.servlet.CGI。我在WebContent文件夹下放了一个简单的php文件(index.php)。我还下载了它并将其添加到类路径(Eclipse:buildpath和addexternaljar)。我现在不知道我做错了什么。我还使用以下工具编译了php:

./configure --with-fastcgi=/usr/local
make
sudo make install
我的web.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Sample PHP Application</display-name>
    <servlet>
        <servlet-name>PHP</servlet-name>  
        <servlet-class>org.mortbay.servlet.CGI</servlet-class>
        <init-param>
            <param-name>commandPrefix</param-name>
            <param-value>/usr/local/bin/php-cgi-fix</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>PHP</servlet-name>
        <url-pattern>/index.php/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.php</welcome-file>
    </welcome-file-list>
</web-app>
不应该是/usr/local/php cgi吗?好的,我现在试过了,但是当我启动服务器时,我仍然得到了相同的ecxeptions


(我真的不喜欢使用maven!)

你几乎可以肯定不想遵循这些说明-它们是为非常古老的Jetty 5设计的

请尝试按照以下两组说明之一进行操作

他们采取非常不同的方法,所以你需要决定你想用哪种方法

第一个使用Quercus,它是用Java编写的PHP实现。 第二个使用CGI运行标准PHP实现


报告您遇到的任何具体问题。

servlet类已重命名为
org.eclipse.jetty.servlets.CGI
以下是我为使其运行所做的工作:

Im使用jetty-distribution-8.1.5.v20120716

  • 将jetty-distribution-8.1.5.v20120716.zip解压缩到目录jetty

  • 我认为这没有必要,但我不希望其他webapps/servlet干扰配置,因此:清空目录Jetty/contexts、Jetty/contexts available、Jetty/webapps

  • 可选:要获取调试消息,请在Jetty/etc/Jetty.xml中添加以下内容

其中org/eclipse/jetty/servlets/CGI.java是执行php脚本的cgiservlets代码


hth

很抱歉,回复太晚。昨天我一直在想怎么做。我不会尝试第一个链接,但我尝试了第二个链接,它与我的链接惊人地相似。我的错误服务不可用?抱歉,这些链接不适合我。我也不使用maven:(对于Jetty 9.0.x,我必须将true添加到web.xml文件中,介于和之间。我还必须添加一行“-module=servlets”在start.ini中,以便org.eclipse.jetty.servlets.CGI及其依赖项在类路径中可用。我得到
500:无法在jetty中执行CGI
,使用windows 7,我的php5-CGI-fix.bat看起来像
设置脚本\u文件名=%1 C:\php\php CGI.exe
,命令提示告诉
php警告:未知:文件名C第0行的未知项不能为空
$ /usr/local/bin/php-cgi-fix ; exit;
/usr/local/bin/php-cgi-fix: line 3: /usr/bin/php-cgi: No such file or directory
logout
<Get class="org.eclipse.jetty.util.log.Log" name="log"> <Call name="setDebugEnabled"> <Arg type="boolean">true</Arg> </Call> </Get> #!/usr/bin/bash export SCRIPT_FILENAME=$1 /usr/bin/php5-cgi <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" > <display-name>MYPROJECT</display-name> <servlet> <servlet-name>PHP</servlet-name> <servlet-class>org.eclipse.jetty.servlets.CGI</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>commandPrefix</param-name> <param-value>../../../bin/php5-cgi-fix.sh</param-value> </init-param> <init-param> <param-name>Path</param-name> <param-value>/bin:/usr/bin:/usr/local/bin</param-value> </init-param> <init-param> <param-name>cgibinResourceBase</param-name> <param-value>webapps/MYPROJECT</param-value> </init-param> <!-- <init-param> <param-name>cgibinResourceBaseIsRelative</param-name> <param-value>true</param-value> </init-param> --> <!-- <init-param> <param-name>ENV_yourRequiredEnvironmentVariable</param-name> <param-value>yourValue</param-value> </init-param> --> <!-- Path, other ENV_variables including ENV_SystemRoot, ENV_REDIRECT_STATUS on Windows --> </servlet> <servlet-mapping> <servlet-name>PHP</servlet-name> <url-pattern>*.php</url-pattern> <!-- Any other URL patterns that are needed by your app to be processed by PHP --> </servlet-mapping> <!-- If you want http://yourhost/yourapp to call yourapp/yourapp.php then make a welcome file --> <!-- <welcome-file-list> <welcome-file>index.php</welcome-file> </welcome-file-list> --> </web-app> http://localhost:8080/MYPROJECT/cgi-bin/test.php