BBS過去ログ |
| ■目次 |
皆様また、お前か!と思わないで下さいm(__)m
CGI設置についてですが、
以前別トピにも書きましたが現在管理人様から教えてもらった様に
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl
<Directory /var/www/html>
Options Indexes FollowSymLinks
↓
Options IncludesNoExec ExecCGI FollowSymLinks
AllowOverride None
↓
AllowOverride All ← .htaccessの許可
</Directory>
例の通りそのままに設定しました。
これで、http://xxx.ddo.jp/xxx.cgi で動くはずだと思うのですが、
Internal Server Errorとなってしまうのです。
しかしアパッチのデフォルトで作られる、
/var/www/cgi-bn/ に xxx.cgi を入れると認識されるのです。
しかしそれでもルートコマンドをなぜか !/usr/bin/perl -- にしないとやはり Internal Server Error になってしまいます。
けど実際は表示されるというだけでCGIプログラム自体は機能していないようです(ーー;)
ちょっとややこしくなってしまいましたが、
質問1
任意のCGIファイルは
/var/www/cgi-bn/
/var/www/http/ のどちらにも臨機応変に入れて構わないのでしょうか?
それとも、先の httpd.conf にて /var/www/http/ を記述しているので、
/var/www/http/cgi-bin/ 等とディレクトリーを作ってそこだけを使用した方が良いのでしょうか?
質問2
「Perlのパスを/usr/bin/perlから、一般的な/usr/local/bin/perlに変更」にしてありますが、
#!/usr/local/bin/perl にした場合先の通り
/var/www/cgi-bn/
/var/www/http/ のどちらに設置しても Internal Server Error になってしまうのです。
ちなみに、#!/usr/bin/perl にしても同様です。
しかし、
/var/www/cgi-bn/ にCGIファイルを #!!/usr/bin/perl -- にして設置すると、
機能はしませんが一応ファイルの表示はされます。
度重なるご教授をよろしくお願いします。
CGI苦労してますおじんです。
ルートコマンドに関しましてはwhich perlで表示されるパスに設定するだけです。
ほとんどのトラブルは別スレッドにあるS-JIS2EUC関連の文字コードもしくは改行コードの問題ではないでしょうか?
初心者の私はファイル一つ一つASCII/バイナリ確認してアップロードするようにいたしました。
めんどくさいけどこの方が結果的には早く正常動作しますね。
それ以外はパーミッションの設定だけです。(一般的なCGIの場合)
以上を注意すればどこに置いても動作します。
簡単なテスト用CGIが動作するかどうかを確認するのが一番です。Webmaster様もCGI動作チェック用スクリプトが動作するかどうかでトラブルシューティングが変わってくると思います。
チェックCGIが動作すれば、多分上記の問題のどれかではないでしょうか?
すべってたらごめんなさい。
> CGI苦労してますおじんです。
>
> ルートコマンドに関しましてはwhich perlで表示されるパスに設定するだけです。
> ほとんどのトラブルは別スレッドにあるS-JIS2EUC関連の文字コードもしくは改行コードの問題ではないでしょうか?
> 初心者の私はファイル一つ一つASCII/バイナリ確認してアップロードするようにいたしました。
> めんどくさいけどこの方が結果的には早く正常動作しますね。
> それ以外はパーミッションの設定だけです。(一般的なCGIの場合)
>
> 以上を注意すればどこに置いても動作します。
> 簡単なテスト用CGIが動作するかどうかを確認するのが一番です。Webmaster様もCGI動作チェック用スクリプトが動作するかどうかでトラブルシューティングが変わってくると思います。
> チェックCGIが動作すれば、多分上記の問題のどれかではないでしょうか?
>
> すべってたらごめんなさい。
いつもいつも恐縮です^^;
管理人様の用意してくれたtest.cgiでも全く同じ結果なのです・・・
ただ、SSi、PHPはテストファイルのまま動作確認取れています。
CGIだけがダメなのです。
一昨日(今回再インストする前)までは、
/var/www/cgi-bn/ + #!/usr/bin/perl -- の組み合わせで動いていたのですが・・・
> 注意すればどこに置いても動作します。
と言う事は
/var/www/cgi-bn/
/var/www/http/cgi-bin/ のどちらでも良いと言う訳ですよね。
すると仮に http://xxx.ddo.jp/cgi-bin/xxx.cgi とした場合、
/var/www/cgi-bn/
/var/www/http/cgi-bin/ どちらを探しに行ってしまうのでしょうか???
それとも、/www/html/内に cgi-binフォルダーを作ってはイケないのでしょうか。
またまた疑問が飛躍してしまいました。
ホント、分からない事ばかりです。
すみませんが、話戻りますが初めの問題から解決させて行こうと思います。
(CGI動かない事にはどうしようも無いので(T_T))
再度のご教授よろしくお願いします。
初心者なのではっきりしたことは言えないのですが、私の場合はユーザーディレクトリ(/home/user/~public_html/)以下のどこに置いても正常に転送されたCGIは動作しています。
またこのページを見て構成されたならperlのディレクトリは/usr/local/bin/perlのはずです。
過去ログ(かな?)の私のCGIに関するWebmaster様のアドバイスをご参照下さい。
私の場合はユーザーの不在という変な原因だったのですが、トラブルシューティングの基本はWebmaster様のご指導の通りだと思います。
御健闘をお祈り申し上げます。
> これで、http://xxx.ddo.jp/xxx.cgi で動くはずだと思うのですが、
> Internal Server Errorとなってしまうのです。
これについては/var/log/httpd/error_logの内容を貼り付けてください。
> 質問1
> 任意のCGIファイルは
> /var/www/cgi-bn/
> /var/www/http/ のどちらにも臨機応変に入れて構わないのでしょうか?
/var/www/http/ではなくて、/var/www/html/ですよね?
/var/www/cgi-bn/はデフォルトでCGIが動作するように設定されており、/var/www/html/は当サイトの設定でCGIが動作するように設定しているため、どちらでも動作します。
> 質問2
> 「Perlのパスを/usr/bin/perlから、一般的な/usr/local/bin/perlに変更」にしてありますが、
> #!/usr/local/bin/perl にした場合先の通り
> /var/www/cgi-bn/
> /var/www/http/ のどちらに設置しても Internal Server Error になってしまうのです。
>
> ちなみに、#!/usr/bin/perl にしても同様です。
すみません、コンテンツ上の説明不足でした。
/usr/bin/perlへ/usr/local/bin/perlでリンクをはっているだけなので、どちらでも動作します。
あと、簡単なテスト用CGIで動作確認したときの以下の情報も貼り付けてください。
・テスト用CGIのパーミッション、所有者情報(lsコマンド結果)
・テスト用CGIのソースそのもの(catコマンド結果)
・テスト用CGI格納ディレクトリのパーミッション、所有者情報(lsコマンド結果)
あと、テスト用CGIはwindows上で作成してftpでサーバへアップしたのでしょうか?
重ねがさねお手数掛けます。
> > これで、http://xxx.ddo.jp/xxx.cgi で動くはずだと思うのですが、
> > Internal Server Errorとなってしまうのです。
> これについては/var/log/httpd/error_logの内容を貼り付けてください。
[error] [client 192.168.x.xx] Premature end of script headers: test.cgi
です。
> あと、簡単なテスト用CGIで動作確認したときの以下の情報も貼り付けてください。
> ・テスト用CGIのパーミッション、所有者情報(lsコマンド結果)
> ・テスト用CGIのソースそのもの(catコマンド結果)
> ・テスト用CGI格納ディレクトリのパーミッション、所有者情報(lsコマンド結果)
test.cgiパーミッションは755、格納ディレクトリーは777です。
lsコマンド、catコマンド???
> あと、テスト用CGIはwindows上で作成してftpでサーバへアップしたのでしょうか?
test.cgiは管理人様公開の
http://fedorasrv.com/apache.shtml
「(2)CGI確認 CGIで簡単なテストページを表示してみる。 」
のtest.cgiスクリプト記述をコピペでWinのメモ帳に写したものをFFFTPで自動転送(ファイル名で転送モード切替)しました。
その他CGI関連のHPで無料配布されているCGIをWinで編集してFFFTPで自動に転送しています。
それらのCGIも全部認識してくれないのです。
よろしくお願いします。
> test.cgiパーミッションは755、格納ディレクトリーは777です。
> lsコマンド、catコマンド???
すみません、CGI格納ディレクトリが/var/www/html/の場合、以下のコマンドの結果を貼り付けてください。
[root@linux root]# ll /var/www/html/
[root@linux root]# ll /var/www/
> > test.cgiパーミッションは755、格納ディレクトリーは777です。
> > lsコマンド、catコマンド???
勉強不足で申し訳ありません。
> [root@linux root]# ll /var/www/html/
test.cgi以外にWEB公開ファイル、フォルダーが多数入っているので、
それらフォルダーの更新日が一覧に出てきました。
> [root@linux root]# ll /var/www/
合計40
drwxrwxrwx 3root root 4096 7月 2 22:26 cgi-bin
drwxr-xr-x 3root root 4096 7月 2 14:37 error
drwxrwxrwx 594root root 20480 7月 2 22:23 html
drwxr-xr-x 3 root root 4096 7月 2 15:01 icons
drwxr-xr-x 13 root root 4096 7月 2 14:37 manual
drwxr-xr-x 2 webalizer root 4096 7月 2 14:38 usage
となりました。
どうでしょうか???
ちなみに /var/www/cgi-bin/ も調べてみました。
[root@linux root]# ll /var/www/cgi-bin/
-rwxr-xr-x 1 ユ−ザ−名 ユ−ザ−名 240 7月 3 02:40 2test.cgi
drwxr-xr-x 2 ユ−ザ−名 ユ−ザ−名 4096 7月 2 16:45 ReAccess
-rwxr-xr-x 1 ユ−ザ−名 ユ−ザ−名 237 7月 3 02:31 test.cgi
You have new mail in /var/spool/mail/root
です。
ReAccessはHPのリファを取っているのですが前にも報告した通り、
/usr/bin/perl、/usr/local/bin/perlどちらにしてもInternal Server Errorになってしまい、
現在/usr/bin/perl -- にてInternal Server Errorは解決されていますが、
実際にcgiプログラムは動いていません。
ここで面白い事を発見しました。
test.cgi(/usr/bin/perl)表示されず・・・
2test.cgi(/usr/bin/perl --)表示されたのです。
なんで、/pear -- なのでしょうか???
しかし、テキストファイルならこれでも良いのですが、動的なCGIが全く動かないのです。。。
> ここで面白い事を発見しました。
>
> test.cgi(/usr/bin/perl)表示されず・・・
> 2test.cgi(/usr/bin/perl --)表示されたのです。
>
> なんで、/pear -- なのでしょうか???
Perlのパスに「 --」をつけると改行コードを無視します。
これで動作しているということは、FFFTPでサーバへ転送時に改行コードが変換されていないということになります。
FFFTPはデフォルトで拡張子がcgiのファイルはアスキーモードで転送するため、このときに改行コードがCR+LFからLFに変換されますが、FTPサーバ側がアスキモードでのアップロードを許可していなければ変換されません。
FTPサーバがvsftpdであれば、アスキーモードでのアップロードは許可するように設定してますでしょうか?
vsftpdはデフォルトでアスキモードでの転送は許可しないようになってます。
> > ここで面白い事を発見しました。
> >
> > test.cgi(/usr/bin/perl)表示されず・・・
> > 2test.cgi(/usr/bin/perl --)表示されたのです。
> >
> > なんで、/pear -- なのでしょうか???
> Perlのパスに「 --」をつけると改行コードを無視します。
> これで動作しているということは、FFFTPでサーバへ転送時に改行コードが変換されていないということになります。
> FFFTPはデフォルトで拡張子がcgiのファイルはアスキーモードで転送するため、このときに改行コードがCR+LFからLFに変換されますが、FTPサーバ側がアスキモードでのアップロードを許可していなければ変換されません。
> FTPサーバがvsftpdであれば、アスキーモードでのアップロードは許可するように設定してますでしょうか?
> vsftpdはデフォルトでアスキモードでの転送は許可しないようになってます。
FTPサーバですがFC2に標準で同梱されていた vsftpd です。
> vsftpdはデフォルトでアスキモードでの転送は許可しないようになってます。
という事はこれが原因でしょうか?
ちなみに
> FTPサーバがvsftpdであれば、アスキーモードでのアップロードは許可するように設定してますでしょうか?
はしておりません。・・・・というか初耳の設定項目です^_^;
そこでhttp://fedorasrv.com/vsftpd.shtmlを見直して、
vsftpd.confに修正をしましたら
/var/www/html/test.cgi
/var/www/cgi-bin/test.cgi
それぞれ表示されました。ありがとうございます。
FTPはGUIでやってしまったので管理人様のページを見ていなかったです。お世話がせしました。
ところで、動的なCGI(カウンター系)を置いてみたのですが、
メインメニューは表示されますがやはり動いていないようです。
後、何か見落としの修正箇所とかあるのでしょうか・・・
> FTPはGUIでやってしまったので管理人様のページを見ていなかったです。お世話がせしました。
うまくいったようでよかったです。ていうか、vsFTPDが人騒がせなFTPサーバですね。ただでさえ、CGIの動作にはトラブルが多いのに、必須の設定がデフォルトで無効化されてるなんて・・・。
>
> ところで、動的なCGI(カウンター系)を置いてみたのですが、
> メインメニューは表示されますがやはり動いていないようです。
> 後、何か見落としの修正箇所とかあるのでしょうか・・・
具体的にどちらのカウンタをご利用でしょうか?
静的なCGIの動作確認がとれているディレクトリ上で動的なCGIだと動作しないということはありませんので、おそらくこのカウンタCGI自体の設置手順に誤りがあるのではと思います。
> > FTPはGUIでやってしまったので管理人様のページを見ていなかったです。お世話がせしました。
> うまくいったようでよかったです。ていうか、vsFTPDが人騒がせなFTPサーバですね。ただでさえ、CGIの動作にはトラブルが多いのに、必須の設定がデフォルトで無効化されてるなんて・・・。
> >
> > ところで、動的なCGI(カウンター系)を置いてみたのですが、
> > メインメニューは表示されますがやはり動いていないようです。
> > 後、何か見落としの修正箇所とかあるのでしょうか・・・
> 具体的にどちらのカウンタをご利用でしょうか?
> 静的なCGIの動作確認がとれているディレクトリ上で動的なCGIだと動作しないということはありませんので、おそらくこのカウンタCGI自体の設置手順に誤りがあるのではと思います。
度重なるご返信ありがとうございます。
お言葉に甘えまして^_^;
以下がそうなのです。
http://giga-active.ddo.jp/cgi-bin/ReAccess/access.cgi?count
ご覧の様にメインメニューやサブメニュー、管理者モードへもログイン出来ます。
しかし、カンウンターがリファを取っていないのです。
今回再インストするまえまではきちんと動いていたのですが・・・
配布CGIの事まで・・・場違いだとは承知しております。
もし何か分かりましたらお願いいたします。
> お言葉に甘えまして^_^;
> 以下がそうなのです。
>
> http://giga-active.ddo.jp/cgi-bin/ReAccess/access.cgi?count
>
> ご覧の様にメインメニューやサブメニュー、管理者モードへもログイン出来ます。
> しかし、カンウンターがリファを取っていないのです。
どこが問題の箇所なのでしょうか?
> > しかし、カンウンターがリファを取っていないのです。
> どこが問題の箇所なのでしょうか?
えっ?
BESTランキングの順位表示ですが、
「このランクには登録されたURLはありません!」
と言う事で全くどこからのリファも表示されていないと思うのですが・・・
それとも私だけが見えないのかな?
それはそれで問題ですが・・・^_^;
一応私から見えるモノを画像にしました。
追伸です。
掲示板系のCGIを設置してみました。
こちらは何の問題も無く画像アップからトピック作成まで動作しております。
という事は私のCGIサーバ関係の設定は管理人様に教わった通りで間違いは無いみたいです。
> えっ?
> BESTランキングの順位表示ですが、
> 「このランクには登録されたURLはありません!」
> と言う事で全くどこからのリファも表示されていないと思うのですが・・・
私は正常動作時の姿を知らないので、「リファが表示されない」だけでは、どこが問題の箇所かわかりませんでした^^;
なるほど、確かに「このランクには登録されたURLはありません!」となってますが、これは完全にCGI自体の問題ではないでしょうか?
掲示板等も動作されているようですし。
問題の箇所には正常時はアクセス元のURLが表示されるのですか?
> 問題の箇所には正常時はアクセス元のURLが表示されるのですか?
やはり。。。私と同じ様に見えていましたか・・・
そうなんです。
正常ですとリファ元が一覧で表示されてくるのです。
現在、その配布元へ質問として上げておりますが、
まだ回答が来ていません。
回答が来て原因が分かったら情報の一環としてまたこちらに掲載させて頂きます。
管理人様をはじめ皆様。
いつもいつもトピックを長くしてしまい本当に申し訳ありません。
私のCGIの例ですが配布元から回答が来たのでこちらに掲載させてもらいます。
今回私は
http://www.cj-c.com/cgi_s/access.htm
のスクリプト動作がきっかけでトピックを立たせてもらいました。
結論から言うとロックファイルをCGI内で自動で作成されるはずなのに、
それが作成されないと言う不具合が原因でした。
結局、解決方法として、
ロックファイルを使用しないという設定にしましたら無事に動作しました。
なぜ、私のアパッチ内でこういう不具合が出たのかは分かりませんが、
もし私と同じ様にHPを運営していてリファ集計CGIで私と同じCGIを使っている方、
または使おうとしている方おりましたら気を付けて下さい。
管理人様本当にありがとうございました。