我想配置 Jetty 运行 PHP 文件,但目前尚未成功。我的 Eclipse IDE 中安装了 Jetty WTP 工具。
当我启动 Jetty 服务器时,出现了以下异常:java.lang.ClassNotFoundException org.mortbay.servlet.CGI:org.mortbay.servlet.CGI和javax.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 执行此操作的人。