jetty 服务器正在执行 php

jetty 服务器正在执行 php

我想配置 Jetty 运行 PHP 文件,但目前尚未成功。我的 Eclipse IDE 中安装了 Jetty WTP 工具。

当我启动 Jetty 服务器时,出现了以下异常:java.lang.ClassNotFoundException org.mortbay.servlet.CGI:org.mortbay.servlet.CGIjavax.servlet.UnavailableException:org.mortbay.servlet.CGI。我将一个简单的 php 文件 (index.php) 放在我的 WebContent 文件夹下。我还下载了这个库并将其添加到类路径 (Eclipse:构建路径并添加外部 jar)。我现在不知道我做错了什么。我还用以下方法编译了 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>

这可能是我的 php-cgi-fix 文件,当我打开它时,我在终端上得到了以下文本:

$ /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

难道不应该是 /usr/local/php-cgi 吗?好的,我现在尝试了,但是启动服务器时仍然出现相同的异常。

(我真的不喜欢使用 maven

答案1

安装php-cgi(包含/usr/bin/php-cgi)。

Ubuntu/Debian:

sudo apt-get install php5-cgi

CentOS/Red Hat/Fedora:

yum install php-cli

在 Mac OS 中尝试创建符号链接:

sudo ln -s /usr/bin/php /usr/bin/php-cgi

答案2

如果你的 php-cgi-fix 脚本来自Jetty 和 PHP那么它就不再需要了,您可以直接调用 php-cgi。

在您提出问题 22 天后,如果您仍未解决,那么我建议您先在 Eclipse 之外运行它。启用调试并在日志中查找包含“CGI”的行,并将 init_param“ignoreExitState”设置为“true”。

有关 Jetty 和 PHP 的问题每年都会在邮件列表中出现一次,所以我猜很少有人这样做。您很可能是第一个在 Mac 上使用特定版本的 Jetty 执行此操作的人。

相关内容