- ベストアンサー
CGI実行時のコンソール内容の出力先について
- xreaでPerlのCGIを使って、シェルスクリプトを実行している際に、意図しないメッセージが出力される問題について質問です。
- CGIの出力で表示されるメッセージ 'unable to write 'random state'' の対処方法を教えてください。
- CGI実行時に表示されるメッセージ 'unable to write 'random state'' を消去する方法についてお知りかかれば教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- CGI(perl)の出力結果を返すタイミング
サーバでCGI(perl)が実行され、 ブラウザに出力結果が返されるわけですが、 どのタイミングで返されるのですか? CGI(perl)の実行が全て終わってからですか? 随時バッファリングせずに返すのですか? 出力結果が一定のサイズに達すると随所で返すのですか? 環境によって違うでしょうが、一般的にどうなってるのでしょうか?
- 締切済み
- CGI
- レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい
レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい。 レンタルサーバー会社からは、「cgi-bin」フォルダにcgiファイルを配置(アップロード)すれば ブラウザで見れると説明を受けました。 用意したcgiファイルは以下の内容です。 _____________________________ #! c:/perl64/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; #さいころを振る。 $n = int(rand 6) + 1; #HTMLの出力 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0.1//EN\">\n"; print "<html>\n"; print "<head><title>Perlでさいころ</title></html>\n"; print "<body>"; print "<p>さいころの目は<big>$n</big>です。</p>\n"; #御言葉を出力 if($n == 4){ print "<p>ふ、不吉な・・・。4が出ました。</p>\n"; } print "<body></html>"; __________________________________________ 一行目が原因でしょうか。ローカルで作成した、cgiファイルをレンタルサーバーに配置(アップロード)し ブラウザから見たいと考えております。 ご存知の方、教えて頂けないでしょうか。 宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- perlのメールフォームでS/MIME送信
お世話になります。 perlをつかってメールフォームを作っています。 メールフォームから受け取った情報を(受け取るまでは暗号化してます。) S/MIMEで暗号化しメール送信したいと考えております。(linux sendmeil) 調べてみたところopensslを使いあらかじめ用意したテキストファイルを S/MIMEで送る事ができました。 ↓こんな感じです。--------------------------------------------------------------- $SMIME = 'openssl smime -sign -signer my-cesr.pem -inkey key.pem -in mail.txt -text | openssl smime -encrypt -from masa@****.co.jp -to yosi@****.co.jp -subject "signtest" -des3 my-cesr.pem | /usr/sbin/sendmail masa@****.co.jp'; open (MAIL, "| $SMIME"); close(MAIL); -------------------------------------------------------------------------------- ↑この方法ですとメールフォームから受け取った情報を一度ファイルに 保存(mail.txt)しなければならないので、実用的ではありません。 何とかファイルからではなく変数で送信したいのですがうまく行きません。 っというか方法がさっぱり分かりません。 どうぞ宜しくお願いします。m(__)m
- ベストアンサー
- Perl
- ifstream/ofstream について
こんにちは。 よろしくお願いいたします。 ifstream で定義したファイルを open し、一端 close した後再度 open しようとすると、エラーとなります。 何が原因かわかりますでしょうか? ちなみに、インファイル.txt は何も記載していないので、下記ソースのwhileループ内には入りません。 が、whileループが有ればエラー(メッセージ:3103)が発生し、 無ければ、エラーは発生しません。 環境:XP home & ボーランドC++Builder6.0 テストしたソース: void __fastcall TForm1::Button6Click(TObject *Sender) { ifstream InFile; ofstream OutFile; char cBuf[255]; InFile.open("インファイル.txt"); if (!InFile) ShowMessage("3101"); OutFile.open("アウトファイル.txt"); if (!OutFile) ShowMessage("3002"); while (!InFile.getline(cBuf, sizeof(cBuf)).eof()) { OutFile << cBuf << endl; } // このwhileループが無ければ、エラーは発生しません。 OutFile.close(); InFile.close(); InFile.open("インファイル.txt"); if (!InFile) ShowMessage("3103"); // ここでメッセージが出力されます。 }
- ベストアンサー
- C・C++・C#
- Apacheでhttpd-ssl.confエラー
当方、windows7 32bitでwwwサーバを組んでいる超初心者です。 apacheは2.2.25、Active Perlは5.16.3.1で OpenSSLは1_0_1です。、 c/apache softoware Foundation c/perl c/openssl 以上の場所にインストールしています。 http://tako.jugem.cc/?eid=719 ここのサイトの説明通りにやりました。但し、openssl.cfg は c/apache softoware Foundation/apache2.2/conf/sslに入れましたが。 上記のサイトで > openssl req -config openssl.cfg -new -out ./ssl.key/server.csr 色々聞かれるので埋める とあり、色々埋めました。 Apacheのhttpd.confの変更、 httpd-ssl.confの変更も行いました。↓ SSLCertificateFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.crt" SSLCertificateKeyFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.key" と変更しました。 server.crtファイルも server.keyファイルも上記の場所にあるのですが、 これでapacheを起動すると The requested operation has faild! とエラーメッセージが出てしまいます。 httpd-ssl.confを有効にしなければ、apacheは普通に動いてくれます。 何が足りないのか、私には解りません。 考えうるエラーの原因が思い当たったらご教授願います。
- ベストアンサー
- ネットワーク
- CGIの中で出力するテキスト内容をhtml側で表示する方法。
htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。 1.CGIスクリプト(Perlで記述)を用意... test.cgi ----------------------------------------------------- #!/usr/bin/perl print "Content-type:text/html; charset=shift_jis\n\n"; print <<__EOD; <html lang="ja"> <head> <title>TITLE</title> </head> <div align=center> <a>テスト1</a><br> <a>テスト2</a><br> </div><br> </body></html> __EOD open(OUT,">a.tmp") || die "$!"; print OUT "aaaaa\n"; close(OUT); ----------------------------------------------------- 2.htmlを用意 ... test.html ----------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>HTML TEST</title> </head> <body> <script src="http://xxx/CGI/test.cgi"></script> </body> </html> ----------------------------------------------------- 上記のとき、動作として、 ◆ブラウザからCGIのパス(http://svr1/CGI/test.cgi)に直接アクセスした場合、 「テスト1」「テスト2」の文字が表示され、a.tmpファイルも作成されている。 ◆ブラウザからhtml(http://svr1/test.html)にアクセスした場合、ブラウザ画面は何も表示されない (真っ白となる)が、a.tmpファイルは作成されている。 のようになってしまいます。 後者のようにして、htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 以上、よろしくお願い致します。
- ベストアンサー
- CGI
- 特定CGI「だけ」が、ローカル環境で実行できない原因について。(POSTでのフォーム送信はローカル実行不可?)
こんばんは。 サーバでは問題なく動くCGI(Perl)が ローカルPC環境で動きません。 ローカルのHTMLファイルから呼び出すと CGIファイルがテキストとして表示されます。 しかし、パス関係の間違いはありません。 動かないCGIファイルを「print "Hello!";」などの 単純な文章に書き換え、同じHTMLから呼ぶと動きます。 また、「Perl文法チェックサイト」で チェックしても、文法間違いはありません。 ほかにどういった原因が考えられますでしょうか? ---------------------------------------- なお、ローカルのHTMLでは 「form」にラジオボタンを配置、 「submit」で「POST」送信したうえで その結果によってHTMLを生成出力するようにしています。 ここらへん、まったくよく分かっていないのですが もしかして、こういう送信はローカルでは 実行できないとかあるのでしょうか? 送信部分を削って、HTML出力だけのCGIにすると動きます。 繰り返しますがサーバ上では動作しています。 よろしくお願いいたします。 ---------------------------------------- ◆環境◆ WindowsXP IE6.01 httpd 1.42m ActivePerl(バージョンの見方が分かりません)
- ベストアンサー
- CGI
- CGIスクリプトのブラウザから実行エラー
OS: RedHatLinux7.2 perl -v : This is perl, v5.6.2 built for i686-linux HttpErrLog: display: Unable to connect to X server (). Premature end of script headers: /XXX/XXX/XXX.cgi GD::Graphを用いたperlスクリプトをブラウザから実行すると、 上記のようなエラーとなってしまいます。 コマンドでの実行では問題無く動作します。 「print」のみの簡易cgiで試行しましたが、問題なく実行されます。 cgiのパーミッションも確認しました。 ソースは以下の通りです。 作業が進まなくて困っています。 どなたかお知恵をお貸しください。 perl.cgi: --------------------------------------------------------- #!/usr/bin/perl -- use strict; use GD::Graph::bars; my @xLabels = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); my @data2002 = qw( 17 19 26 38 56 64 67 53 40 29 21 13 ); my @data2003 = qw( 19 24 27 41 56 69 75 60 44 33 22 15 ); my @data = ( \@xLabels, \@data2002, \@data2003 ); my $graph = GD::Graph::bars->new( 800, 600 ); $graph->set( title => "Rainfall 2002/2003", y_label => "Millimetres" ); my $image = $graph->plot( \@data ) or die( "Cannot create image" ); open( OUT, "| display -") or die( "Cannot display image: $!" ); binmode OUT; print OUT $image->png(); close OUT; ---------------------------------------------------------
- 締切済み
- Linux系OS
- CGIを実行すると、あなたが指定したファイルは見つかりませんとなる。
趣味で自分のHPにヒロ・データベースのCGIを設置したくて、全くの初心者からCGI設置に挑戦しているのですが、初歩からうまくできなくて困っています。自分なりにネットで調べても、うまくいかないので助言を御願します。OSはwindowsXPで、CGIファイルの編集にはTerapadを、転送にはFFFTPを使っています。レンタルサーバーはtok2を使っています。 ヒロ・データベースをDLして一行目(#!/usr/bin/perl)とパーミッションをTOK2(http://tok2.com/cgi.html)の指定通り変更して設定して、アップすると500 Internal Server Errorと出て、ここで詰まってしまったので、もっと簡単なCGIから挑戦しようと思い、http://web-up.cside.biz/cgi_3.shtml を参考にして、 初歩的なCGIを設置してみたのですが、「あなたが指定したファイルは見つかりません」と出ました。このエラーメッセージから、アドレスが間違っているかファイルがアップされていないんだろうと思ったのですが、cgiファイルと同じ場所に入っているindex.htmlにはアクセスできて、index.htmlをrensyuu.cgiと書き換えてもダメ(半角英数でちゃんと打ちました)で、ファイルがアップされていないのかと思ってもFFFTPの右側のホストのファイル一覧にはrensyuu.cgiと出ています。cgiファイルはアスキーモードで転送しています。 ここまでで、何か抜けていることや、私が勘違いしているようなことが分かれば教えて欲しいです。御願します!
- ベストアンサー
- レンタルサーバ・ASP
- CGIから外部コマンド実行時の標準出力の取得方法について
RH7.3の環境で試しているのですが、どうもうまく動作しません。 CGIから呼び出す方法として3つ試したのですが、 open(IN,"|sudo -u USER PROGRAM"); $text = `sudo -u USER PROGRAM`; system("sudo -u USER PROGRAM"); 最後のsytemは一応期待通りの動作になりました。 ただ、これですと実行結果(標準出力)を取り込めないのですが、何か方法はありませんか? PROGRAMはbashのシェルスクリプトです。 最初の2つですと、sudoの関係かエラーが出ます。 ./PROGRAM: SQL*Plus:: command not found systemの場合はちゃんと動作します。 ■実際にやりたいこと oracleサーバへの問い合わせ結果を取得したいのですが、 10gのクライアントまでは入りましたが、perlのDBD::Oracleがうまく入らなかったため、sqlplusで処理しようと考えています。 最初は直接CGIから呼び出そうとしたのですが、sudo時に環境変数が設定されないので、bashのシェルスクリプトにexportで先頭に書いております。 外部公開サーバではありませんので、とりあえずセキュリティーは無視しています。 systemで実行結果をcgiの標準入力に渡すか、バッククォートでエラーが出なくするかどちらかの方法はありませんでしょうか?
- ベストアンサー
- Perl
お礼
> 「標準エラー出力」というのはご存じですか? エラー出力は別系統だったんですね。知りませんでした… "2>"で希望通りの動作はできました。 ご教示いただきありがとうございました。 > コンソールで実行した時に、 > ls -a ~ > とかやった時に.rndってファイルは出てきませんかね? はい。出ます。 ネットで調べるとそのファイルを消すと出なくなるとかが書いてあって、試しましたがダメでした。 > opensslの引数に"-rand"を追加してみたらどうでしょうかね? それも試してみたのですが、そうするとメッセージが1行増えるだけでした… 1024 semi-random bytes loaded unable to write 'random state'