08/09/18 15:01:14 /9HVp0RB
CGIでエラーがあった場合エラーページにリダイレクトしてるんですが、
リダイレクトする前のエラー内容のエラーロギング(fprintf(stder,))が
出力されません。(何も出力されない)
syslogを使うことや他の方法も考えたのですが、とりあえずなぜ
エラー出力がでないか調べています。
なにか解決策あれば教えてください。
・apacheはver2.0です
・リダイレクトしない場合は、ちゃんとエラー出力される
・リダイレクトはLocation :~の絶対パス使用(相対パスによる内部リダイレクトだとエラー出力された)
・他の言語(PHP)で試すと、リダイレクト前のはちゃんと出力される
681:nobodyさん
08/09/18 22:43:17
$data = "MAILADDR=<入力したメールアドレス>\n PASSWORD=<入力したPW>\n";
if (open(FH, ">data.bat")) {
print FH $data;
close(FH);
↑CGIを使用しページを見ているユーザーに入力を求め、<入力したメールアドレス><入力したPW>に代入?させてファイルに書き出したいのですがいい方法ってありますか?
682:nobodyさん
08/09/18 22:48:21
ここはCあるいはC++用のスレなのでperlの質問はスレ違いです。
Perlコーディング初心者質問スレ Part 58
スレリンク(php板)
683:nobodyさん
08/09/24 13:34:55
>>680 fflushはしたの?
684:nobodyさん
08/10/09 01:47:06
>>683
fflushもしてみましたが、ダメでした。
何が原因なんだろう。
685:nobodyさん
08/10/09 15:17:08
Location: 受信と同時に接続が切られて、そんでmod_cgiからシグナルが飛んでるとか?
でもヘッダで指定したサイズまでは読むだろうしなぁ。
デバッガをアタッチして、なんで死んでるか見てみたら。
686:nobodyさん
08/10/11 03:41:33
fprintfとかCライブラリではなくシステムコール直に叩いてみて
687:nobodyさん
08/10/15 17:54:06
stdoutとstderrは親経由で表示とか、ロギングされてるだろうから、
接続が切られると即捨てられる運命にあるのでは?
いや、Location: 受信と同時に接続を切るようなクライアントがあるのかどうかしらんけど。
サイズを指定すればそのバイト数までは読むようになるのかも。
688:684
08/10/16 00:40:29
>686
exec系は一通りwaitしたりしつつ試してみましたが、ダメでした。
fflushなりprintなりは終わっているはずなんですが。。。
>686,687
Location時にもContent-lenghtをつける、ということでしょうか?
その場合って、stderrの出力分を指定?でしょうか。
ちなみに、複数台のサーバが全部そういう状態で、割と困ってます。。
689:nobodyさん
08/11/23 08:48:19 Zhb3/Rjb
プロセスが毎回生成されるから
c++であってもあんまり良くないんじゃない?
690:inaba
08/11/23 21:54:57 eDvTRSVx
EclipseでWebアプリケーションを開発しています。
サーバを起動時コンソールに以下のようなメッセージが出ます。
2008/11/23 21:23:44 org.apache.catalina.core.AprLifecycleListener init
情報: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
C:\Program Files\Java\jdk1.6.0_01\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.6.0_01\bin\..\jre\bin\client;
C:\Program Files\Java\jdk1.6.0_01\bin\..\jre\bin;hnologies\ATI Control Panel;C:\Program Files\Java\jdk1.6.0_01\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin
2008/11/23 21:23:44 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8081 で初期化します
2008/11/23 21:23:44 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 562 ms
2008/11/23 21:23:44 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2008/11/23 21:23:44 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.10
SQL failed
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'ecsite.item' doesn't exist
データベースにアクセスできません。原因がわかる方お願いいたします。
691:nobodyさん
08/11/23 22:47:32
マルチ?
692:nobodyさん
09/06/17 02:16:44 zEMbuSde
ほっしゅほっしゅ
693:nobodyさん
09/07/04 17:57:16
文字コード面倒だな。決め打ち最強か。
694:nobodyさん
09/07/15 12:42:28
UNICODE
695:nobodyさん
09/07/15 15:51:36
正直、C/CGIとServletってどっちがはやいの?
Servletの仕組みvsC自体の速さの対決になるとは思うが。
696:nobodyさん
09/07/16 11:02:53
こんにちわ。
C++でフリーなサーバ作ってます。
そのCGI部分で質問させていただきます。
php-cgiをexecveして、cgi実行させるところまでは出来たのですが、
POSTが取れません。php-cgi実行時に標準入力に
POSTメッセージを書き込んでるのですが、php-cgi
では見えないようなんです。
またPHP_SELFも設定できません。
REDIRECT_STATUSとSCRIPT_FILENAMEは設定しました。
どこに聞けばいいかとか情報お持ちの方はお願いします。
環境はfedora core 7とg++です。
phpは標準についてくるものだけです。
よろしくお願い申し上げます。
697:nobodyさん
09/07/17 12:26:28
696です。自己解決しました。
POSTという文字列が大文字小文字区別がありました。
まとめておくと、
SCRIPT_FILENAME
REDIRECT_STATUS
を指定するのが必須。
execve等で/usr/sbin/php-cgi、引数にphpを指定して実行。
POST,GET等はcaseセンシティブということでした。
では。
698:nobodyさん
09/09/01 20:16:45
FastCGI+C が史上最速。
699:nobodyさん
09/09/03 10:53:56
Cでmodにしてしまう方がいいかも
700:nobodyさん
09/10/22 16:19:37
C++&FastCGIでcomet作れるかの