![]() 自宅Widowsサーバー利用において、CGIは頭痛の種。 上手く動作しない、sendmailが動かない、画像のUPが出来ないなどなど多々あると思います。 私のサーバー参照ページはhttp://sakaguch.com/(鷹の巣「サーバー」様)です。 サーバー利用において色々便利な情報が満載なので、自宅サーバーをお考えの方はこちらを参照することをお勧めします。 CGI編集にはnotepadもしくはK-COLLECT様提供のperledtiorを利用すると便利です。 WindowsCGIのつぼ @CGIが動かない。 一番簡単なサーバーソフト利用をお勧めします。 一番設定が簡単何はAN HTTPD です。 デフォルトでCGIが動きます。 (設置するCGIのperl設定が不要なので簡単) CGIの勉強にはこれを使っています。↓ http://www.st.rim.or.jp/~nakata/ 二番目に簡単なのは札幌ワークス様の BJD↓ http://homepage2.nifty.com/spw/bjd/ このサーバーソフトもCGIがデフォルトで動作OKです。 三番目apache http://www.apache.jp/dist/httpd/binaries/win32/ これには私もかなり泣かされました。cgiがなかなか動いてくれないし 設置するCGIもイチイチperlの場所を指定しないといけない。 自宅サーバーを考えているなら、これは最後に挑戦して見てください。 apache for windowsで利用するcgiではKENTWEB様のcgiが設定する上でかなり親切に出来ていますのでお勧めです。 http://www.kent-web.com/ 基本的に設置するCGIの冒頭に #!/usr/local/bin/perl が有ります。これはperlの場所を指定していまして、上記記述はUNIX用に書かれております。 Windowsの場合は別途perlをインストールする必要があるので、perlをインストールした場所に書き換えます。 仮にperlをインストールした場所がCドライブのディレクトリーだとすると、perlの記述は下記のように書き換えないといけません。 例:#!/usr/local/bin/perl →#!c:/perl/bin/perl 設置するCGIのパスを書き換えるこちによりapacheで動作が可能です。 (※apacheではhttpdの初期設定お行う必要が有ります。詳しくはここ) 次に気をつけないといけないのが、CGIデーターの保護方法です。 仮にAさんが掲示板CGIを開いて何か書き込みをしようとしているときに、Bさんが同じ掲示板CGIを開くと掲示板などのデーターが消えてしまいます。これらを防ぐ方法として排他ロックや共有ロックが使われます。KENTWEB様のCGIには下記のような設定が有ります。 # ロックファイル # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 2; 私も詳しく知らないんですが、Windowsサーバーではmkdir関数を使用しないと上手く動きません。 この辺はこれから勉強しないといけないので詳細が判明しだいUP致します。 Windowsサーバーで画像がアップできない・・ 大多数のCGIがUNIX用に作成されていまして、UNIXサーバーではデフォルトでCGIを使った画像をアップの際、バイナリ処理が可能であります。 Windowsの場合、CGIを使った画像UPの際バイナリ処理が出来ないため画像UPなどのCGIが上手く動作しない不具合となります。 なのでCGI記述を書き換えないといけなくなります。 例:↓画像ファイルを保存するCGIの記述です。 if (!open(IMAGE,"> $img_dir{$cmd{'log'}}$number$ext2\.$ext")) { &Error('書出エラー',"画像データ $fname\.$ext が記録できませんでした."); } print IMAGE $in{$name}; close(IMAGE); 上記記述に以下の内容を書き足します。 if (!open(IMAGE,"> $img_dir{$cmd{'log'}}$number$ext2\.$ext")) { &Error('書出エラー',"画像データ $fname\.$ext が記録できませんでした."); } binmode(IMAGE); print IMAGE $in{$name}; close(IMAGE); バイナリモード指定記述を追加することにより、画像UPが可能となります。 Asendmail CGIを使う 契約プロバイダーのメールを使うことで簡単に出来る方法を説明いたします。 ※:Windowsは保存データーを暗号化出来ない為、パスワードや保存データーがそのまま見られる可能性が有りますので、十二分に気をつけるもしくはばれても良いメールで設定お願いします。 なおきの部屋[XOOPS版]様提供のsendまね〜るを使います。 sendまね〜るの設定方法は同胞のdocファイルに有りますので呼んでください。 ここでは設定のコツを説明いたします。 基本的に公開するサーバーのメールアカウントを利用しないと上手く動きません。 SMTPサーバのアドレス?(IPを奨励) []: →契約プロバイダー送信メールサーバー名 SMTPポート番号?(通常は25) [25]: →25です。 送信者のメールアドレスとは、SMTPサーバとの (接続)通信時に使用されるメールアドレスです。 通常、受信者は知ることができません。 SMTPサーバによっては、メールアドレスにより 接続を許可しているところがありますので その場合は適切なアドレスを設定してください。 -sf オプション使用時には、このアドレスが ヘッダのFrom: 行にセットされます。 送信者のメールアドレス? []: →契約プロバイダーメールアドレスを入力 送信者の名前は、-sf オプション使用時に ヘッダのFrom: 行に設定される名前です。 -sf オプションを使用しない場合は、 この設定内容は使用されません。 送信者の名前? []: →メールアカウントを入力。 POP before SMTPの使用 Yes=1 No=0 ? [0]: →1(契約プロバイダーによっては必要ない場合も有ります) POP3サーバのアドレス?(IPを奨励) []: →契約プロバイダーの受信メールサーバーアドレス。 POP3サーバのポート番号?(通常は110) [110]: →110 POP3サーバのユーザー名? []: →メールアカウント POP3サーバのパスワード? []: →メールパスワード 以上で設定は完了です。 テスト方法は同胞のdocファイルに有りますのでお読みください。 CGIへの設定方法 #●メール送信プログラム(sendmail以外は要検討) $sendmail = 'usr/local/perl/lib'; このような記述の部分を ↓ #●メール送信プログラム(sendmail以外は要検討) $sendmail = 'C:/sendm/sendmane.exe'; 上記の場合はCドライブのディレクトリー「sendm」フォルダーにインストールした場合なので もし別のディレクトリーにインストールしてしまった場合は書き換えてください。 これでフォームメールが使えるようになります。 以上で説明は終わりです。不明な点がございましたら掲示板にでも質問お願いします。 |
■PR■ |