私はコマンドラインからCGIとして実行されるPerlスクリプトを持っています。 Perlスクリプトの中から、どのように実行されているかをどのように伝えることができますか?PerlスクリプトがCGIコンテキストで実行されているかどうかを確認する方法はありますか?
答えて
GATEWAY_INTERFACE
環境変数を確認することをお勧めします。これは、サーバーが使用しているCGIプロトコルのバージョンを含みます。これは、ほとんどの場合、CGI/1.1
です。 Tony Miller(または変数HTTP_*
変数)に記載されている変数は、クライアントが提供する場合にのみ設定されます。クライアントがHost
ヘッダーを省略してHTTP_HOST
のままにすることは稀ですが、不可能ではありません。
#!/usr/bin/perl
use strict;
use warnings;
use constant IS_CGI => exists $ENV{'GATEWAY_INTERFACE'};
私はスクリプトが最初にコンパイルされたときに、それが設定されますので、私も、またMOD_PERL
環境変数をチェックしますいくつかの点でmod_perlの下で実行するように期待していた場合。
#!/usr/bin/perl
use strict;
use warnings;
use constant IS_MOD_PERL => exists $ENV{'MOD_PERL'};
use constant IS_CGI => IS_MOD_PERL || exists $ENV{'GATEWAY_INTERFACE'};
可能な方法の1つは、Webサーバーによって設定された環境変数を確認することです。
#!/usr/bin/perl
use strict;
use warnings;
our $IS_CGI = exists $ENV{'HTTP_HOST'};
プログラムがTTYに接続されているかどうかを参照してください:
my $where = -t() ? 'command line' : 'web server';
-1:正しくありません。これは、プログラムがCGIで動作しているかどうかではなく、インタラクティブに実行されているかどうかを示します。 cronジョブから呼び出されたり、シェルパイプラインの一部として呼び出されたりすると、間違った結果が出ます(非対話型でも非CGIでも可能です)。 –
あなたは最高のCGIでGIをチェックします。
use CGI qw(header);
my $is_cgi = defined $ENV{'GATEWAY_INTERFACE'};
print header("text/plain") if $is_cgi;
print "O HAI, ", $is_cgi ? "CGI\n" : "COMMAND LINE\n";
あなたが引用符をスキップすることができます
私の$ is_cgiを= $ ENV {GATEWAY_INTERFACE}が定義されました。
ちなみに、CGIモジュールが環境変数にアクセスする方法があればいいと思います。例: my $ q =新しいCGI;私のis_cgi = $ q-> gatewayInterface(); # 動作しません。ちょっとした提案。 –
- 1. Perl CGIスクリプトでアップロードされたファイル名を確実に判別する方法はありますか?
- 2. スクリプトがdofile()でインクルードされているかどうか、またはLuaで直接実行されているかどうかを確認する方法は?
- 3. プロセスが実行されているかどうかを確認するpowershellスクリプト
- 4. cgi/perlスクリプトが実行されないようにする
- 5. virtualenvで実行されているスクリプトがグローバルPythonにアクセスするかどうかを確認する方法
- 6. PHPスクリプトがすでに実行されているかどうかを確認する方法
- 7. PerlスクリプトがWindows上で実行されているかどうかを確認するにはどうすればよいですか?
- 8. rubyスクリプトが既に実行されているかどうかを確認
- 9. スクリプトがPowerShell ISEによって実行されているかどうかを確認する方法はありますか?
- 10. Entity Framework:コンテキストにオブジェクトがあるかどうかを確認する方法はありますか?
- 11. AUTOLISPでSHIFTが押されているかどうかを確認する方法はありますか?
- 12. cudaコードがリロケータブルデバイスコードでコンパイルされているかどうかを確認する方法はありますか?
- 13. iPhoneアプリでボタンが押されているかどうかを確認する方法はありますか?
- 14. クラスがPythonでインスタンス化されているかどうかを確認する方法はありますか?
- 15. バッチファイルから、プログラムがインストールされているかどうかを確認する方法はありますか?
- 16. UIViewControllerが表示されているかどうかを確認する良い方法はありますか?
- 17. は、performSelector:withObject:afterDelay:が登録されているかどうかを確認する方法はありますか?
- 18. VMがサーバーモードまたはクライアントモードで実行されているかどうかを確認する方法は?
- 19. は、CGIスクリプト内からurlopen呼び出し、私はプロセスがアクティブであるかどうかを確認するのpythonのcgiスクリプトを持っているエラー
- 20. カーネルがCUDAで実行されたかどうかを確認する方法
- 21. コンボボックスのドロップダウンリストが表示されているかどうかを確認する方法はありますか?
- 22. メンバーにモックが設定されているかどうかを確認する方法はありますか?
- 23. シンボルが引用されているかどうかを確認する方法はありますか?
- 24. OSにプログラム/パッケージがインストールされているかどうかを確認する方法はありますか?
- 25. 特定のアドインがインストールされているかどうかを確認する方法はありますか?
- 26. ベロシティ:変数が定義されているかどうかを確認する方法はありますか
- 27. フラッシュがインストールされているかどうかを確認する方法はありますか?
- 28. システムキャレットが表示されているかどうかを確認する方法はありますか?
- 29. Primefaces RadioCheckboxがチェックされているかどうかを確認する方法はありますか?
- 30. QML要素がロードされているかどうかを確認する方法はありますか?
http://stackoverflow.com/questions/1914966/how-can-i-determine-if-a-script-was-called-from-the-command-line-or-as-a-cgi-scri http://stackoverflow.com/questions/3086655/in-perl-how-to-distiniguish-between-cli-cgi-mode – daxim