JSP 動的 Web ページ技術を使用した Web サイトを担当していたとき、たまたま PHP で書かれた関数がいくつかあったため、Tomcat に PHP をサポートさせようとすぐに思いつきました。 Tomcat も Apache によって作成されていますが、JSP のみをサポートしていますか? Tomcat で PHP を使用できますか?オンラインで検索すると、最初の質問に対する答えがすぐに見つかりました。Tomcat は Perl などの CGI をサポートできます (具体的な設定については添付を参照してください)。しかし、検索を続けても、Tomcat に PHP を使用させる方法は見つかりませんでした。PHP+JSP をサポートするいわゆる Web プラットフォームを構築するには、Apache と Tomcat を共存させてインストールする方法が一般的に使用されます。
もちろん実際には、PHP 自体も CGI の使用をサポートしているので、自分で試してみました (Windows オペレーティング システム上で)。まず、添付ファイルの指示に従って、Tomcat が CGI をサポートするようにし、次にサーブレット内の web.xml を変更します。 - CGI の設定セクションに名前が追加されます:
-value > init-param >
を追加し、Tomcat が PHP.exe を実行できるようにします。 Tomcat を再起動した後、WEB-INF ディレクトリに新しい cgi ディレクトリを作成し、ここに PHP ファイルを配置し、仮想的にマップされた cgi-bin ディレクトリを使用してこれらの PHP ファイルにアクセスします。
ただし、PHP ファイルに何も変更を加えないと、出力がない場合があります。 PHP ファイルのヘッダーに行を追加し、2 つの改行を出力する必要があります:
echo " nn " ;理由は明らかではありません。 Content-type の入力、または Perl の CGI プログラミング スタイルを待っている可能性があります。
ただし、この設定では、PHP (4.1.0 以降) の $_REQUEST、$_GET、$_POST などの変数は、サーバー変数または環境変数 $_SERVER["QUERY_STRING"], からのみ取得できます。 $_ENV["QUERY_STRING"]。フォームのPOST送信はサポートされていないのかもしれません...まだ試していません。
私は Tomcat に詳しくないので、これらは現在の方法の単なる修正です。良い実践方法があるかもしれません。アドバイスをいただければ幸いです。
添付ファイル:
Tomcat での CGI スクリプトの使用
Tomcat は主にサーブレット/JSP コンテナーであることを目的としていますが、従来の Web サーバーに匹敵する多くの機能を備えています。その 1 つは、Common Gateway Interface (CGI) のサポートです。 CGI は、ブラウザのリクエストに応じて外部プログラムを実行するための手段で、通常は Web ベースのフォームを処理します。これは、Perl、Python、awk、Unix シェルなど、ほぼすべてのプログラミング言語またはスクリプト言語でプログラムを呼び出すことができるためです。スクリプト、および Java さえもすべてサポートされているオプションです。ただし、起動時のオーバーヘッドのため、おそらく Java アプリケーションを CGI として実行することはありません。サーブレット仕様の元の設計は、このオーバーヘッドを排除することによって行われました。誰かがリンクやボタンをクリックするたびに新しいオペレーティング システム レベルのプロセスを起動する必要がないため、ほとんどの場合 CGI よりも効率的です。
Tomcat にはレガシー CGI スクリプトを実行できるオプションの CGI サーブレットが含まれています。新しいバックエンド処理のほとんどは、ユーザー定義のサーブレットと JSP によって実行されます。
Tomcat の CGI サーブレットを有効にするには、次の手順を実行する必要があります。 ファイル servlets-cgi.renametojar (CATALINA_HOME/server/lib/ にある) の名前を次のように変更します。 servlets-cgi.jar を作成し、CGI スクリプトを処理するサーブレットが Tomcat の CLASSPATH に配置されるように、Tomcat の CATALINA_BASE/conf/web.xml ファイルで、cgi という名前のサーブレットの定義のコメントを解除します (これはディストリビューションの 241 行目あたりです)。また、Tomcat の web.xml で、CGI サーブレットのサーブレット マッピング (配布されたファイルの 299 行目付近) のコメントを解除します。これは、CGI スクリプトへの HTML リンクを指定するか、WEB-INF/cgi ディレクトリに配置します。 (WEB-INF は、セキュリティ上の理由から、ユーザーに表示されたくないものを非表示にする安全な場所であることに注意してください)。または、それらをコンテキスト内の他のディレクトリに置き、cgiPathPrefix 初期化パラメータを調整します。これにより、CGI スクリプトの実際の場所が指定されます。通常、Tomcat を再起動すると、CGI 処理が動作できるようになります。実際のスクリプトを見つけるためのサーブレットは WEB-INF/cgi です。前述のとおり、WEB-INF ディレクトリはブラウザからの偶発的な覗き見から保護されているため、パスワードやその他の機密情報が含まれる可能性のある CGI スクリプトを配置するのに適しています。ただし、他のサーバーとの互換性を確保するために、スクリプトを従来のディレクトリ /cgi-bin に保存することをお勧めしますが、このディレクトリ内のファイルは、好奇心旺盛な Web サーファーによって表示される可能性があることに注意してください。 Tomcat を実行しているユーザーが CGI スクリプト ファイルを実行できることを確認してください