Win7系統下如何配置Tomcat支持PHP和Perl

  1. 一、安裝和系統環境變量設置

    1、我使用的PHP爲php-5.4.31,不用5.5以上版本的原因是,因爲他們都是使用VC11編譯的,需要一個DLL,win7及一下都不支持。下載VC9編譯的PHP 5.4(5.4.31) for  X86的已編譯版本。我的安裝目錄是D:\Application\php-5.4.31,

    將安裝後的路徑設置到系統環境變量path中。

    2、perl直接下載安裝即可(會自動配置環境變量,不用操心)。

    3、Tomcat用的是7.0.41版本。很多文檔要求將server/lib下servlets-cgi改名爲servlets-cgi.jar。從6版本以後,好像就沒有server目錄,內部已經自動支持cgi,只需要進行配置即可。

    Tomcat需要JDK 1.6以上,所以JDK需要先安裝好。

  2. 二、配置步驟:

    1、到D:\Application\php-5.4.31目錄下

    將php.ini-development複製一份同一目錄下,命名爲php.ini

    <1>設置extension_dir參數:

    extension_dir="D:\Application\php-5.4.31\ext"

    <1>設置cgi.force_redirect參數:

    cgi.force_redirect = 0

  3. 2、打開Tomcat的conf下的context.xml文件

    給Context增加屬性privileged="true",修改後的Context元素屬性如下所示:

    <Context privileged="true">

  4. 3、打開Tomcat的conf下的web.xml文件

    在servlet和servlet-mapping之間增加如下的內容:(注意,註釋不能放到配置項裏面,否則啓動報錯)

    <!—Add to support PHP & Perl -->

    <servlet>

            <servlet-name>cgi</servlet-name>

            <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

            <init-param>

              <param-name>debug</param-name>

              <param-value>0</param-value>

            </init-param>

            <init-param>

              <param-name>cgiPathPrefix</param-name>

     <param-value>WEB-INF/cgi-bin</param-value>

            </init-param>

             <load-on-startup>5</load-on-startup>

    </servlet>

     

    <servlet>

    <servlet-name>php</servlet-name>

    <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

    <init-param>

    <param-name>clientInputTimeout</param-name>

    <param-value>200</www.gzlij.com 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:\Application\php-5.4.31\php-cgi.exe</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/php-bin</param-value> 

    </init-param>

    <load-on-startup>5</load-on-startup>

    </servlet>

     

    <servlet-mapping>

    <servlet-name>php</servlet-name>

    <url-pattern>/php-bin/*</url-pattern>

    </servlet-mapping>

     

    <servlet-mapping>

    <servlet-name>cgi</servlet-name>

    <url-pattern>/cgi-bin/*</url-pattern>

    </servlet-mapping>

    備註:

    1、我們配製了兩個servlet,分別是php、CGI

    2、在servlet參數中

    <param-name>executable</param-name>

    <param-value>D:\Application\php-5.4.31\php-cgi.exe</param-value>

    指向CGI程序執行器,其實就一可被調用的可執行程序。(這裏帶全路徑,好像不帶路徑也可以,因爲path環境變量裏已經配置了),記住不要用php.exe。

    如果沒有配置,缺省就是調用perl執行程序。

  5. 3、腳本存放路徑

      <param-name>cgiPathPrefix</param-name>

      <param-value>WEB-INF/cgi-bin</param-value>

    這裏將perl腳本配置的是指向webapps/web-inf/cgi-bin目錄下。

    <param-name>cgiPathPrefix</param-name>

    <param-value>WEB-INF/php-bin</param-value> 

    PHP的腳本指向的是webapps/web-inf/php-bin目錄下。

  6. 4、資源URL路徑映射。

    這裏如果請求的資源是/php-bin/*則,指向php服務程序,如果是/cgi-bin/*則指向cgi服務程序。

    <servlet-mapping>

    <servlet-name>php</servlet-name>

    <url-pattern>/php-bin/*</url-pattern>

    </servlet-mapping>

     <servlet-mapping>

    <servlet-name>cgi</servlet-name>

    <url-pattern>/cgi-bin/*</url-pattern>

    </servlet-mapping>

  7. 三、測試

    1、分別將如下的test.php和test.cgi測試程序放到webapps\ROOT\WEB-INF\php-bin和webapps\ROOT\WEB-INF\cgi-bin目錄下。

    其中test.php內容如下:

    <?php phpinfo();?>

    Test.cgi內容如下:

    # filename: test1.cgi

    print "Content-type: text/html\n\n";

    print "Hello, world!\n"

  8. 2、重新啓動tomcat。

    瀏覽器地址欄輸入:http://127.0.0.1:8080/php-bin/test.php

    如果顯示如下,則說明PHP設置正確。

    Win7系統下如何配置Tomcat支持PHP和Perl
  9. <?php

    echo "hello World!\n\n";

    echo "hello World!\n\n";

    echo "hello World!\n\n";

    ?>

    針對上面的程序,如果配置中使用的是PHP.exe,則只能現實兩行“hello world!”, 第一行總是莫名其妙地丟失。而且對php-info()函數,第一行也會丟失。

    (很多文檔中都提到這個問題,其實就是因爲用錯了程序。)

     

    瀏覽器地址欄輸入:http://127.0.0.1:8080/cgi-bin/test.cgi

    如果顯示“hello world!”,則說明cgi設置正確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章