1

私は、c++ で書かれたウェブサイト cgi-bin プログラムを持っています。

残念ながら、友人のサイトの Web サイト プロバイダーでは、Perl または PHP の cgi-bin スクリプトしか使用できません。

C ++コンパイル済みバイナリを呼び出すだけの非常に小さなPerlまたはPHPラッパーを単純に持つ簡単な方法はありますか?

C++ プログラムは POST コマンドの stdin から読み取ることができますか、それとも Perl または PHP によって読み取られてから転送される必要がありますか。

4

3 に答える 3

4

Perl のバッククォートまたは「システム」コマンドを使用して、シェル コマンドを実行できます。また、perl には、 C++用のものを含め、perl で呼び出される他の言語でコードを記述できるようにする「インライン」クラスが多数あります。機能するものが見つからない場合は、そのパッケージを使用して独自のラッパーを作成できます。

于 2008-11-12T01:31:40.520 に答える
2

PHP の system() 関数を使用してシェル コマンドを実行し、それを使用して別のプログラムを起動できます。そのプログラムの STDOUT は、php の stdout と同じ場所 (HTTP 接続) に送られます。stdin が get/post/etc から読み取れるようにするには、いじる必要があるかもしれません。

しかし、ほとんどの場合、Web サイトのプロバイダーが、この方法でプログラムを実行する機能を無効にしています。これはセキュリティ上のリスクになる可能性があり、特に php と perl のみを許可する場合、php/perl 以外を実行するメソッドを可能な限り無効にする可能性があります。つまり、短い答えは、おそらく運が悪いということです。

于 2008-11-12T01:21:50.663 に答える
0

私の問題を解決した PHP コードについては、私のAwstats Wrapperブログ投稿を参照してください。私のアプローチは、CGI クエリ パラメータから適切な環境変数が設定されたコマンド ラインを作成し、結果の出力を置換して、CGI へのリンクが代わりにラッパー スクリプトに移動するようにすることでした。PHP は独自のヘッダーを提供するため、CGI からのヘッダー出力も削除しました。

于 2008-11-12T02:09:07.433 に答える