Re: Perlのシンボリックリンクのことです ( No.1 ) |
|
- ????????? 2012/11/23 12:46
- ????????? みかん
-
追記です。
下記のようなエラーがでます。
[root@mikan /]# ln -s /usr/bin/perl /usr/local/bin/perl ln: `/usr/bin/perl' へのシンボリックリンク `/usr/local/bin/perl' を作成します: そのようなファイルやディレクトリはありません [root@mikan /]#
|
Re: Perlのシンボリックリンクのことです ( No.2 ) |
|
- ????????? 2012/11/23 14:18
- ????????? しずくちゃん
-
># which perl
whichではなくwhereisで確認してください # whereis perl
または # ls -al /usr/local/bin/perl とやって ..... /usr/local/bin/perl -> /usr/bin/perl のような表示が出ればリンクになっています。
|
Re: Perlのシンボリックリンクのことです ( No.3 ) |
|
- ????????? 2012/11/23 14:32
- ????????? みかん
-
しずくちゃん、さん、ありがとうございます
やってみました。 [root@mikan /]# whereis perl perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz
[root@mikan /]# ls -al /usr/local/bin/perl ls: /usr/local/bin/perl: そのようなファイルやディレクトリはありません
と、なってしまうのです。
|
Re: Perlのシンボリックリンクのことです ( No.4 ) |
|
- ????????? 2012/11/23 15:11
- ????????? しずくちゃん
-
なんでなんでしょうかね・・
まずrootで作業していることを確認(と言っても # になってるからrootなんでしょうが…)
# cd /usr/local/bin で /usr/local/bin へ移動。(移動できなければディレクトリが無いのかも) # ls -al とやって perlへのリンクの有無を確認してください。 無ければ、 # ln -s /usr/bin/perl perl とやってリンクを作ってみます。エラーが出て作れないならパーミッションかなんかの問題かも。 エラーが出なければ、 # ls -al とやって perl のリンクが出来ていればOKです。
|
Re: Perlのシンボリックリンクのことです ( No.5 ) |
|
- ????????? 2012/11/23 15:34
- ????????? みかん
-
お世話になります。
/usr/localの中にbinがないようです。
# ln -s /usr/bin/perl perlとやりましたら下記のようになりました。 lrwxrwxrwx 1 root root 13 11月 23 15:18 perl -> /usr/bin/perl
binがなければmkdirコマンドでbinを作成せればよいですか?
|
Re: Perlのシンボリックリンクのことです ( No.6 ) |
|
- ????????? 2012/11/23 15:46
- ????????? みかん
-
みかんさん、できました。
localの中にbinを作成したらokです。
]# whereis perl /usr/local/bin/perl
新たな問題点、恐縮です。
test.cgiにアクセスしますと「Internal Server Error」になってしまうのです。 下記で実行できるように設定してあります。#をとる ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
test.cgiの派ミッションは750です、755でも同じエラーです。
|
Re: Perlのシンボリックリンクのことです ( No.7 ) |
|
- ????????? 2012/11/23 15:55
- ????????? しずくちゃん
-
とりあえず /usr/local/bin を作って、その中にリンクを作ればいいと思いますが、影響等よくわからないです。
普通はOSのインストール当初からあるような気がします。(私は自分で作った覚えがないから) ちなみに私のPCだと、/usr/local/bin は root:root所有の755になっています
|
Re: Perlのシンボリックリンクのことです ( No.8 ) |
|
- ????????? 2012/11/23 16:23
- ????????? みかん
-
しずくちゃん,さん、ありがとうございます。
下記のログから何がわかりますか? /var/www/html/test.cgiにもtest.cgiを作成してしまいました。 設定は/var/www/cgi-binのほうです。
/etc/httpd/logs/error_logです。
[Fri Nov 23 15:57:51 2012] [error] [client 192.168.72.2] Directory index forbidden by Options directive: /var/www/html/ [Fri Nov 23 15:58:02 2012] [error] [client 192.168.72.2] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Fri Nov 23 15:58:02 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi [Fri Nov 23 16:00:55 2012] [error] [client 192.168.72.2] script not found or unable to stat: /var/www/html/test.cgi [Fri Nov 23 16:00:59 2012] [error] [client 192.168.72.2] script not found or unable to stat: /var/www/html/test.cgi [Fri Nov 23 16:09:25 2012] [error] [client 192.168.72.2] script not found or unable to stat: /var/www/html/test.cgi [Fri Nov 23 16:09:39 2012] [error] [client 192.168.72.2] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Fri Nov 23 16:09:39 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi [Fri Nov 23 16:14:20 2012] [error] [client 192.168.72.2] Directory index forbidden by Options directive: /var/www/html/ [Fri Nov 23 16:14:25 2012] [error] [client 192.168.72.2] script not found or unable to stat: /var/www/html/test.cgi [Fri Nov 23 16:15:51 2012] [error] [client 192.168.72.2] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Fri Nov 23 16:15:51 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi
|
Re: Perlのシンボリックリンクのことです ( No.9 ) |
|
?????? ?????????????????£???????????????????????? |
Re: Perlのシンボリックリンクのことです ( No.10 ) |
|
- ????????? 2012/11/24 01:04
- ????????? しずくちゃん
-
>下記のログから何がわかりますか?
>/var/www/html/test.cgiにもtest.cgiを作成してしまいました。 >設定は/var/www/cgi-binのほうです。
/var/www/cgi-bin/test.cgi にアクセスしたいのであれば、
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" と設定しているわけですから (ScriptAliasの意味: http://httpd.apache.org/docs/2.2/ja/mod/mod_alias.html#scriptalias )
http://hoge.com/cgi-bin/test.cgi とアクセスしないとダメですよ。 test.cgiのパーミッションは755か705にしてください。(750では動かないと思います)
Premature end of script headers の問題はtest.cgiの一行目の改行コードの問題かも。 "Premature end of script headers"でネット検索するといろいろ出ています。 (夕飯なのでしばらく失礼します)
|
Re: Perlのシンボリックリンクのことです ( No.11 ) |
|
- ????????? 2012/11/23 17:02
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
selinuxが働いていたら対処する
test.cgiの最初の宣言は #!/usr/bin/perl または #!/usr/local/bin/perl になっていますか
test.cgiは windowsで書かれたものですか CenOSで書かれたものですか
windowsで書かれたものならば ftpでascii転送して改行コードを変換してください
改行コードの確認の方法 CentOSの端末で cat -v /var/www/cgi-bin/test.cgi 行末に ^M が表示されたらwindowsの改行のままです
|
Re: Perlのシンボリックリンクのことです ( No.12 ) |
|
- ????????? 2012/11/23 17:23
- ????????? みかん
-
strangerさ、、お世話になります。
>selinuxが働いていたら対処する 停止してます >#!/usr/local/bin/perl 宣言は上記です
>test.cgiは こちらのサイトをwindowsでコピペしました。
windowsの改行のままなのですね。 コピペの後、CR+LFのコードで保存しftpでascii転送でしょうか? #!/usr/bin/perl #!/usr/local/bin/perl print "Content-type: text/html?n?n"; print "<html>?n"; print "<head>?n"; print "<META http-equiv=?"Content-Type?" content=?"text/html; charset=EUC-JP?">"; print "<title>M-%M-FM-%M-9M-%M-HM-%M-ZM-!M-<M-%M-8</title>?n"; print "</head>?n"; print "<body>?n"; print "CGIM-IM-=M-<M-(M-%M-FM-%M-9M-%M-H?n"; print "</body>?n"; print "</html>?n";
|
Re: Perlのシンボリックリンクのことです ( No.13 ) |
|
- ????????? 2012/11/23 17:55
- ????????? みかん
-
サイト様のtest.cgiをwindowsのメモ帳にコピペしてtest.cgiで保存してftpでascii転送しました。
が、やっぱりMになっていて改行コードが変換されていませんね。 難しい11
[root@mikan /]# cat -v /var/www/cgi-bin/test.cgi #!/usr/local/bin/perl^M print "Content-type: text/html?n?n";^M print "<html>?n";^M print "<head>?n";^M print "<META http-equiv=?"Content-Type?" content=?"text/html; charset=EUC-JP?">";^M print "<title>M-^CeM-^CXM-^CgM-^CyM-^A[M-^CW</title>?n";^M print "</head>?n";^M print "<body>?n";^M print "CGIM-^U?M-^NM-&M-^CeM-^CXM-^Cg?n";^M print "</body>?n";^M print "</html>?n";^M ^M
|
Re: Perlのシンボリックリンクのことです ( No.14 ) |
|
- ????????? 2012/11/23 18:28
- ????????? みかん
-
Mが変わりました、改行コードが変換変換されたようで・・・
/etc/vsftpd/vsftpd.confのファイルはデフォルトでアスキーモードが無効になっているようです。 で、#を外してからftp転送しました。 #ascii_upload_enable=YES→ ascii_upload_enable=YES
#ascii_download_enable=YES→ ascii_download_enable=YES
[root@mikan /]# cat -v /var/www/cgi-bin/test.cgi #!/usr/local/bin/perl print "Content-type: text/html?n?n"; print "<html>?n"; print "<head>?n"; print "<META http-equiv=?"Content-Type?" content=?"text/html; charset=EUC-JP?">"; print "<title>M-^CeM-^CXM-^CgM-^CyM-^A[M-^CW</title>?n"; print "</head>?n"; print "<body>?n"; print "CGIM-^U?M-^NM-&M-^CeM-^CXM-^Cg?n"; print "</body>?n"; print "</html>?n";
でもInternal Server Errorのままです、どこの設定かなぁ?!
|
Re: Perlのシンボリックリンクのことです ( No.15 ) |
|
- ????????? 2012/11/23 18:29
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
nkfコマンドでLF(linux)形式に変えてみる
nkfがない場合は yumで先に入れる --overwriteはファイル名を変えないで上書きするオプション
nkf -Lu --overwrite test.cgi
|
Re: Perlのシンボリックリンクのことです ( No.16 ) |
|
- ????????? 2012/11/23 19:07
- ????????? みかん
-
お世話になります。
さっそくやってみました。 nkf -Lu --overwrite /var/www/cgi-bin/test.cgi
しかし、ここなんですけどhttp://karenn.blogdns.com/cgi-bin/test.cgi
Internal Server Errorとでます。
|
Re: Perlのシンボリックリンクのことです ( No.17 ) |
|
- ????????? 2012/11/23 21:58
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
apacheのerror_logに変化がありませんか
|
Re: Perlのシンボリックリンクのことです ( No.18 ) |
|
- ????????? 2012/11/23 22:05
- ????????? 管理者
-
まずは、strangerさんが書かれた通り「error_log」を確認してみて下さい。
次に、以下を実行して正しく表示できますか?
# cd /var/www/cgi-bin/ # perl test.cgi
この他、パーミッションの件ですがディレクトリも参照権・実行権はありますよね?
|
Re: Perlのシンボリックリンクのことです ( No.19 ) |
|
- ????????? 2012/11/23 22:29
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
#!/usr/local/bin/perl
print "Content-type: text/html?n?n"; print "<html>?n"; print "<head>?n"; print "<META http-equiv=?"Content-Type?" content=?"text/html; charset=EUC-JP?">"; print "<title>testpage</title>?n"; print "</head>?n"; print "<body>?n"; print "CGI-TEST?n"; print "</body>?n"; print "</html>?n";
のように文字化けしている部分を適当な英文字表記にして保存し、asciiアップロード パーミッションを変えて test.cgiにアクセスし error_logを確かめる
|
Re: Perlのシンボリックリンクのことです ( No.20 ) |
|
- ????????? 2012/11/24 01:16
- ????????? しずくちゃん
-
やはりerror_logに何かないか見た方がいいです。
Internal Server Errorだけじゃ可能性がありすぎて分かりません。
|
Re: Perlのシンボリックリンクのことです ( No.21 ) |
|
- ????????? 2012/11/24 04:27
- ????????? みかん
-
stranger さんへ
apacheのerror_logです、とちゅうからですが・・ 8)Exec format error: exec of ってなんでしょう?
[Fri Nov 23 19:11:53 2012] [error] [client 192.168.72.2] mod_mime_magic: can't read `/var/www/cgi-bin/test.cgi', referer: http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=2050 [Fri Nov 23 19:11:53 2012] [error] [client 192.168.72.2] (13)Permission denied: exec of '/var/www/cgi-bin/test.cgi' failed, referer: http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=2050 [Fri Nov 23 19:11:53 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi, referer: http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=2050 [Fri Nov 23 19:27:52 2012] [error] [client 192.168.72.2] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Fri Nov 23 19:27:52 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi [Fri Nov 23 19:30:14 2012] [error] [client 192.168.72.2] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed, referer: http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=2050&p=1 [Fri Nov 23 19:30:14 2012] [error] [client 192.168.72.2] Premature end of script headers: test.cgi, referer: http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=2050&p=1 [Fri Nov 23 19:31:49 2012] [error] [client xx.xx.xx.xx] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Fri Nov 23 19:31:49 2012] [error] [client xx.xx.xx.xx] Premature end of script headers: test.cgi [Fri Nov 23 19:42:19 2012] [notice] caught SIGTERM, shutting down [Sat Nov 24 03:28:53 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Sat Nov 24 03:28:53 2012] [notice] Digest: generating secret for digest authentication ... [Sat Nov 24 03:28:53 2012] [notice] Digest: done [Sat Nov 24 03:28:53 2012] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations [Sat Nov 24 03:30:39 2012] [error] [client xx.xx.xx.xx] File does not exist: /var/www/html/robots.txt [Sat Nov 24 03:30:40 2012] [error] [client xx.xx.xx.xx] File does not exist: /var/www/html/xoops [Sat Nov 24 03:41:21 2012] [error] [client xx.xx.xx.xx] (8)Exec format error: exec of '/var/www/cgi-bin/test.cgi' failed [Sat Nov 24 03:41:21 2012] [error] [client xx.xx.xx.xx] Premature end of script headers: test.cgi ~
apacheの設定は下記です ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin/"> AllowOverride All Options ExecCGI Order allow,deny Allow from all
AddHandler cgi-script .cgi .pl
</Directory>
|
Re: Perlのシンボリックリンクのことです ( No.22 ) |
|
- ????????? 2012/11/24 04:34
- ????????? みかん
-
管理者様へ
# cd /var/www/cgi-bin/ # perl test.cgi
と、やっても何もでません、やはり設定がおかしい??
>ディレクトリも参照権・実行権はありますよね? cgi-binでしょうか? すみません分からなくて、パーミッションは755です。
drwxr-xr-x 2 root root 4096 11月 23 19:26 cgi-bin
|
Re: Perlのシンボリックリンクのことです ( No.23 ) |
|
- ????????? 2012/11/24 07:53
- ????????? 管理者
-
>> ディレクトリも参照権・実行権はありますよね?
> cgi-binでしょうか? すみません分からなくて、パーミッションは755です。
失礼いたしました。以下の実行結果でパーミションは755ですか?
# ls -ld /var/www/cgi-bin
|
Re: Perlのシンボリックリンクのことです ( No.24 ) |
|
- ????????? 2012/11/24 08:22
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
perlの実体が /usr/bin/perlなら
test.cgiの先頭行を #!/usr/bin/perl -- にしてみる -- をつけることで改行コードの問題を回避 それでうまくいくなら perlのパスの問題か改行コードの問題
どうしてもだめなら linuxマシンでtest.cgiを記述してみる
httpd.confの設定は デフォルトの
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
で動くはず ScriptAliasでは全てのファイルをスクリプトとして実行します
ファイルが混在するなら
Alias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin"> AllowOverride All Options ExecCGI AddHandler cgi-script .cgi .pl Order allow,deny Allow from all </Directory>
Aliasの場合は Options ExecCGIとAddHandlerの設定でファイルを指定
|
Re: Perlのシンボリックリンクのことです ( No.25 ) |
|
- ????????? 2012/11/24 12:00
- ????????? しずくちゃん
-
># cd /var/www/cgi-bin/
># perl test.cgi > >と、やっても何もでません、やはり設定がおかしい??
何もでないのは不思議ですよね。予想したように出ない場合でも、 普通、エラーメッセージ的なものは出ますよね。 (プロンプトのシャープ(#)も貼り付けたかキー入力してしまったとかなら何も出ないけど・・・ ちなみに、最初の行のシャープは実際は半角のシャープです、入力部分じゃないので関係ないですけど…)
追記: # cd /var/www/cgi-bin/ # /usr/bin/perl test.cgi でも何も出ないですか?
だらだら質問してすみませんが、/var/www/cgi-bin/test.cgiの最初の行を #!/usr/local/bin/perl から #!/usr/bin/perl に変更しても同じエラーがでますか?
>(8)Exec format error: exec of ... というエラーを再現しようと自分のサーバーでいろいろやっていますが出てきません。 改行コードをCR+LFにしただけでは違うエラーになります。なんなのかしら(w これからお出かけなので私のレスは遅れます。。
|
Re: Perlのシンボリックリンクのことです ( No.26 ) |
|
- ????????? 2012/11/24 12:43
- ????????? みかん
-
管理者さま
>以下の実行結果でパーミションは755ですか? 下記なので755です。
drwxr-xr-x 2 root root 4096 11月 24 06:19 /var/www/cgi-bin
|
Re: Perlのシンボリックリンクのことです ( No.27 ) |
|
- ????????? 2012/11/24 13:04
- ????????? みかん
-
stranger さんへ
>perlの実体が /usr/bin/perlなら ここの管理者さまの「試験用cgiスクリプト」を使わせていただいていますので #!/usr/local/bin/perl -- でやってみましたがやはり「Internal Server Error」でした。
管理者さまの「試験用cgiスクリプト」 vi /var/www/html/test.cgi #!/usr/local/bin/perl print "Content-type: text/html?n?n"; ・ ・
試験用cgiスクリプト」をTeraPadにコーピーし文字改行コードをLF 文字コードをEUCでやっFFFTPにてアスキューモードにて転送も同じエラーになります。 バイナリモードでも同じエラーです。
>どうしてもだめならlinuxマシンでtest.cgiを記述してみる linuxのコンソールにて直接に試験用cgiスクリプト書いて動作確認をするということですか? すみません、よく分かりませんでした。
|
Re: Perlのシンボリックリンクのことです ( No.28 ) |
|
- ????????? 2012/11/24 13:16
- ????????? みかん
-
しずくちゃん 、さんへ
># cd /var/www/cgi-bin/ ># /usr/bin/perl test.cgi >でも何も出ないですか? はい、まったく何もでないのです。
[root@mikan cgi-bin]# /usr/bin/perl test.cgi 何も出ませんでした
>#!/usr/bin/perl >に変更しても同じエラーがでますか?
下記でやってみましたがエラーになりました。 #!/usr/bin/perl --
|
Re: Perlのシンボリックリンクのことです ( No.29 ) |
|
- ????????? 2012/11/24 13:49
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
/usr/bin/perl test.cgi
先頭行の #!/usr/local/bin/perlを無視し (改行コードも影響しない) perlのprintコマンドを実行するだけ
Content-type: text/html
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"><title>テストページ</title> </head> <body> CGI表示テスト </body> </html>
のように表示されるはず
なにも表示されないなら、test.cgi自体がおかしいと思う
|
Re: Perlのシンボリックリンクのことです ( No.30 ) |
|
- ????????? 2012/11/24 14:50
- ????????? みかん
-
stranger さんへ
>perlのprintコマンドを実行するだけ やり方がわからないので今調べいますので、すみません。
それから、 今回のエラーと関係ないかもわからないでですがちょと気になったので 教えてください(検索したもよく分かりませんでした)
/usr/local/bin/で下記のように中身が出ました。
[root@mikan bin]# ls -la 合計 12 drwxr-xr-x 2 root root 4096 11月 23 15:38 . drwxr-xr-x 11 root root 4096 11月 23 16:08 .. lrwxrwxrwx 1 root root 13 11月 23 15:38 perl -> /usr/bin/perl
下記のように「perl -> /usr/bin/per」の状態でエンターキーを押すと「ビジー状態です」と出ます これっておかしいような気がするのですが・・・
[root@mikan bin]# perl -> /usr/bin/perl -bash: /usr/local/bin/perl: テキストファイルがビジー状態です
そもそもの始まりは「シンボリックリンク設定」で
# ln -s /usr/bin/perl /usr/local/bin/perlとやっても「/usr/local/bin/perl」にならず
localの中を見ますとbinが入っておらず手動にて作成したものです。
|
Re: Perlのシンボリックリンクのことです ( No.31 ) |
|
- ????????? 2012/11/24 16:49
- ????????? しずくちゃん
-
>[root@mikan bin]# perl -> /usr/bin/perl
>-bash: /usr/local/bin/perl: テキストファイルがビジー状態です
これって何をやりたいのか意味がわかりません。過去の私の説明が悪かったのだと思います。 変なエラーが出ても当然です。(これでは、perlを起動して何かしているコマンドですよ)
>そもそもの始まりは「シンボリックリンク設定」で > ># ln -s /usr/bin/perl /usr/local/bin/perlとやっても「/usr/local/bin/perl」にならず > >localの中を見ますとbinが入っておらず手動にて作成したものです。 >
そもそもリンクを作るのは、perlの本体が /usr/bin/perl にあるときに、/usr/local/bin/perl でもperlへアクセスできるようにするためです。つまりスクリプトの最初の行で #!/usr/local/bin/perl でも #!/usr/bin/perl でもPerlのスクリプトが動くようにするためです。 リンクが無ければ、#!/usr/local/bin/perl が使えないだけで、 普通は #!/usr/bin/perl は使えるはずなんですよね。(perlの本体が /usr/bin/perlに在るなら)
|
Re: Perlのシンボリックリンクのことです ( No.32 ) |
|
- ????????? 2012/11/24 17:10
- ????????? しずくちゃん
-
# perl -v
または # /usr/bin/perl -v または # /usr/local/bin/perl -v と3種類コンソールから打って、Perlのバージョン等が表示されますか?
|
Re: Perlのシンボリックリンクのことです ( No.33 ) |
|
- ????????? 2012/11/24 17:43
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
[root@mikan bin]# ls -la
合計 12 drwxr-xr-x 2 root root 4096 11月 23 15:38 . drwxr-xr-x 11 root root 4096 11月 23 16:08 .. lrwxrwxrwx 1 root root 13 11月 23 15:38 perl -> /usr/bin/perl
perl -> /usr/bin/perl は/usr/bin/perlへのシンボリックリンクですよと表示しています
端末で cd /var/www/cgi-bin ls /usr/bin/perl test.cgi を実効の意味 /var/www/cgi-binへ移動して lsでtest.cgiが存在するか確認して perlでtest.cgiを実行するという意味です
test.cgiの中身は perlのprintでhtml文を生成するだけ
ブラウザでアクセスした場合はtest.cgiを実行して生成されたhtmlファイルを読み込んで <body> CGI表示テスト </body> bodyで囲まれた CGI表示テスト と表示するだけです
|
Re: Perlのシンボリックリンクのことです ( No.34 ) |
|
- ????????? 2012/11/24 17:46
- ????????? みかん
-
しずくちゃん 、さんお世話になります。
>これって何をやりたいのか意味がわかりません >過去の私の説明が悪かったのだと思います。 ご迷惑ばかりおかけしております、最近linuxに関心を持って始めたばかりの初心者です こちらこそほんとうにご迷惑をおかけして申し訳ない次第です。
>リンクが無ければ、#!/usr/local/bin/perl が使えないだけで、 ここは納得しております。
>(perlの本体が /usr/bin/perlに在るなら) ftpで見ましたらbinの中にperlがありました。 [root@mikan bin]#ls -laだとはみ出て下が表示できません
>と3種類コンソールから打って、Perlのバージョン等が表示されますか?
いいえ、何も下記のように出ませんでした。 [root@karenn usr]# perl -v [root@karenn usr]# /usr/bin/perl -v [root@karenn usr]# /usr/local/bin/perl -v
|
Re: Perlのシンボリックリンクのことです ( No.35 ) |
|
- ????????? 2012/11/24 18:18
- ????????? しずくちゃん
-
>いいえ、何も下記のように出ませんでした。
>[root@karenn usr]# perl -v >[root@karenn usr]# /usr/bin/perl -v >[root@karenn usr]# /usr/local/bin/perl -v
不思議ですよね。どうしてそうなるのか私には分かりません。 (rootだから見えないということもないだろうし・・・)
perlは普通にyumで入れてるわけですよね?(自分でコンパイルしたとかじゃない)
# yum list installed | grep 'perl'
でズラズラとリストが出てくると思いますが、その中に perl.i686(64bit版だと.の後ろが違うかも) はありますでしょうか?
|
Re: Perlのシンボリックリンクのことです ( No.36 ) |
|
- ????????? 2012/11/24 18:26
- ????????? みかん
-
strangerさん、ありがとうございます。
シンボリックリンクとcgiの実効の意味が分かってきました。
それから、下記を実行するコマンド記述がわかりません、
>/usr/bin/perl test.cgi >先頭行の #!/usr/local/bin/perlを無視し改行コードも影響しない) >perlのprintコマンドを実行するだけ
これだと何も表示がないですし・・ [root@mikan cgi-bin]# perl print /usr/bin/perl test.cgi
すみません、付き合いきれませんね(汗)
|
Re: Perlのシンボリックリンクのことです ( No.37 ) |
|
- ????????? 2012/11/24 18:30
- ????????? みかん
-
perl.i686はありませんでした。
[root@mikan cgi-bin]# yum list installed | grep 'perl'
perl.i386 4:5.8.8-38.el5_8 installed perl-Archive-Tar.noarch 1:1.39.1-1.el5_5.2 installed perl-Compress-Zlib.i386 1.42-1.fc6 installed perl-Digest-HMAC.noarch 1.01-15 installed perl-Digest-SHA1.i386 2.11-1.2.1 installed perl-HTML-Parser.i386 3.55-1.fc6 installed perl-HTML-Tagset.noarch 3.10-2.1.1 installed perl-IO-Socket-INET6.noarch 2.51-2.fc6 installed perl-IO-Socket-SSL.noarch 1.01-1.fc6 installed perl-IO-Zlib.noarch 1.04-4.2.1 installed perl-NKF.i386 2.07-1.1.fc6 installed perl-Net-DNS.i386 0.59-3.el5 installed perl-Net-IP.noarch 1.25-2.fc6 installed perl-Net-SSLeay.i386 1.30-4.fc6 installed perl-NetAddr-IP.i386 4.027-5.el5_6 installed perl-Socket6.i386 0.19-3.fc6 installed perl-String-CRC32.i386 1.4-2.fc6 installed perl-URI.noarch 1.35-3 installed perl-libwww-perl.noarch 5.805-1.1.1 installed
|
Re: Perlのシンボリックリンクのことです ( No.38 ) |
|
- ????????? 2012/11/24 18:47
- ????????? しずくちゃん
-
>perl.i686はありませんでした。
perl.i386でもOKなはずです。 ますます分からなくなりました(w
|
Re: Perlのシンボリックリンクのことです ( No.39 ) |
|
- ????????? 2012/11/24 19:26
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
No33で説明した通り
想定 /var/www/cgi-bin/test.cgiが存在する
CentOSの端末で(CentOSにログインして)
cd /var/www/cgi-bin ls /usr/bin/perl test.cgi
test.cgiをよく見る printが行の先頭に記述されていますよね 画面に文字を表示させるためのperlの関数です print以降の文字列を画面に表示します (printコマンドと書いたのが間違いでしたね、perlのprint関数と書くべきでした)
|
Re: Perlのシンボリックリンクのことです ( No.40 ) |
|
- ????????? 2012/11/24 19:27
- ????????? みかん
-
皆様に。
もう一度、最初からcentosのインストールをしてみたらどうでしょうね? どこかがおかしくなってしまった?
意味ないですか?
|
Re: Perlのシンボリックリンクのことです ( No.41 ) |
|
- ????????? 2012/11/24 19:41
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
どこもおかしくはないと思う
CentOS 5.8でしょうから perlのrpmパッケージはi386でOK CentOS 5.8で i686のパッケージがあるのは opensslなど一部のパッケージのみ ほとんどが i386パッケージです
test.cgiを windowsからアップデートするのでなく CentOSで作成してみる viエディタが使いにくいならnanoエディタを使ってみる (たぶんUTF-8で保存されるので charsetの部分をUTF-8に変更) そのくらいしてみたら
|
Re: Perlのシンボリックリンクのことです ( No.42 ) |
|
- ????????? 2012/11/24 19:53
- ????????? みかん
-
stranger、さんへ
手順1 CentOSのviにコピーしましcharsetの部分をUTF-8に変更。
#!/usr/local/bin/perl print "Content-type: text/html?n?n"; print "<html>?n"; print "<head>?n"; print "<META http-equiv=?"Content-Type?" content=?"text/html; charset=UTF-8?">"; print "<title>テストページ</title>?n"; print "</head>?n"; print "<body>?n"; print "CGI表示テスト?n"; print "</body>?n"; print "</html>?n";
手順2 chmod 750 /var/www/cgi-bin/test.cgi chown apache:apache /var/www/cgi-bin/test.cgi
ブラウザで見るとやっぱりエラーでした。
|
Re: Perlのシンボリックリンクのことです ( No.43 ) |
|
- ????????? 2012/11/24 21:11
- ????????? しずくちゃん
-
私はPuttyでサーバーへ接続して、viを使ってテキストをペイストしますが、
ここの掲示板のスクリプトをコピー&ペイストすると、なぜだか知りませんが、 円マーク(?)が逆スラッシュにならないです。
# cat test.cgi とかやって、コンソール上の表示で(目視で)逆スラッシュになってるか確認した方がいいです。 (見た目円マークだったら逆スラッシュに直さないとだめです) 掲示板に貼り付けるとどちらも円マークになるので区別がつきません。 いちおうご注意を、という感じです。
16進ダンプするとこんな感じです 0000000 23 21 2f 75 73 72 2f 6c 6f 63 61 6c 2f 62 69 6e # ! / u s r / l o c a l / b i n 0000020 2f 70 65 72 6c 0a 70 72 69 6e 74 20 22 43 6f 6e / p e r l ?n p r i n t " C o n 0000040 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78 74 2f t e n t - t y p e : t e x t / 0000060 68 74 6d 6c c2 a5 6e c2 a5 6e 22 3b 0a 70 72 69 h t m l 302 245 n 302 245 n " ; ?n p r i 0000100 6e 74 20 22 3c 68 74 6d 6c 3e c2 a5 6e 22 3b 0a n t " < h t m l > 302 245 n " ; ?n 0000120 70 72 69 6e 74 20 22 3c 68 65 61 64 3e c2 a5 6e p r i n t " < h e a d > 302 245 n
追記: 今調べたら、(16進で)c2 a5 になってる部分はUTF-8の円マークのコードのようです。 私の環境が特別なだけかもしれないので、ご参考までに。
|
Re: Perlのシンボリックリンクのことです ( No.44 ) |
|
- ????????? 2012/11/25 10:39
- ????????? stranger
- ?????§??? http://ja.528p.com/
-
No.42 の表示をそのままCentOSのクライアントで張り付けると
perl test.cgiを実行した場合
Bareword found where operator expected at test.cgi line 5, near ""<META http-equiv=?"Content" (Missing operator before Content?) syntax error at test.cgi line 5, near ""<META http-equiv=?"Content" Unrecognized character ?xC2 in column 40 at test.cgi line 5.
のようなエラーを出します 0xC2 は U+00A5 YEN SIGN でキーボードの円マークで入力され windowsで表示される 円マークとは別物と思われる
perlはデフォルトでパスが通っているので test.cgiを作成したディレクトリでそのまま perl test.cgi を実行して html文が表示できるようになってから apacheのディレクトリに移動して、必要な設定をすれば良いです
perl test.cgiに失敗したら apacheで表示できないと思う
|
Re: Perlのシンボリックリンクのことです ( No.45 ) |
|
- ????????? 2012/11/25 10:43
- ????????? しずくちゃん
-
なんかの理由でperlが動かないという感じですけど、以下をやってみてください。
[root@xxxxxxx ~]# cd /var/www/cgi-bin/ で /var/www/cgi-bin/へ移動
[root@xxxxxxx cgi-bin]# echo "print ?"hoge?n?";" > test2.cgi で test2.cgi というスクリプト作成(print文しかないです。?は逆スラッシュ)
[root@xxxxxxx cgi-bin]# cat test2.cgi で中身の確認 print "hoge?n"; のように表示されればOKです。(?は逆スラッシュ)
[root@xxxxxxx cgi-bin]# perl test2.cgi でtest2.cgiを実行
hoge と表示されればOKです。
>もう一度、最初からcentosのインストールをしてみたらどうでしょうね? >どこかがおかしくなってしまった? > >意味ないですか?
面倒でなければインストールし直した方がいいかもです。 (上書きじゃなくて全部消してインストール) ただここまで追求しているから、後学のために、不具合の原因だけでも知りたいですが・・・
5.x系のバージョンは5.8で終わってるような感じ(たぶん)なので、 スペック的に問題がなければ、CentOS 6.3 かなんかの6.xの最新版を入れた方がいいと思います。
OSをインストールしたら、まず最初に yum update でパッケージすべてを最新版にしてから 作業を始めた方がいいです。インストール直後が最新とは限りません。
ここのサイトはEUC-JPで解説されている部分もあるので、デフォルトのUTF-8でシステムの 文字コードを使う場合には注意と言うか、配慮が必要です。
以上は私の意見でして、人によって違うかもです(w
|
Re: Perlのシンボリックリンクのことです ( No.46 ) |
|
- ????????? 2012/11/25 11:19
- ????????? みかん
-
しずくちゃんさん、
stranger さん、
test.cgiが表示できました。
ここなんですけど http://karenn.blogdns.com/cgi-bin/test.cgi
原因はわかりません、もう一度centOSをインストールしてみました。 まったく同じようにインストールし同じように設定をしたのですが最初はなにかおかしいところがあったのでしょう?? それが再インストールで直ったのだと思います。
手間取った「シンボリックリンク設定」も一回で下記のようになりました。 # which perl /usr/local/bin/perl
test.cgiもftpから転送することもなくviで記述してアクセス権設定したら /htmlおよび/cgi-binのどちらからも[CGI表示テスト]表示できました。
これまで長い時間をお付き合いいただき感謝の念に堪えません、ほんとうにありがとうございました。 ご教示いただきましたことをこれから役に立てていき無駄にはいたしません。
クローズはあと少しこのままにいたします。
|
Re: Perlのシンボリックリンクのことです ( No.47 ) |
|
- ????????? 2012/11/25 11:33
- ????????? しずくちゃん
-
解決ということで、おめでとうございます。
ただ原因を知りたかったですね。。。
しつこいですが6.xを入れた方が先がありそうです。
余計なお世話ですが、削除系のコマンドを打つときには注意するといいです。 気づかずに、いろいろ消してしまうときがありますから。 それでは、お元気で・・・
|
Re: Perlのシンボリックリンクのことです ( No.48 ) |
|
- ????????? 2012/11/25 14:04
- ????????? 管理者
-
しずくちゃん、さんが仰っているように、今後の勉強の為にも最新のCentOSを導入されることをお勧めいたします。
サーバのロケールもデフォルトのままのUTF-8が良いでしょう。
文字コードの扱いさえ気をつければ、EUCやUTFでの問題は特に既視する必要はありません。 未だにフリーで公開されているCGIなどはEUCが多いですが、単純にUTF-8で保存しなおせば大抵のものは稼働しますからね。
|
Re: Perlのシンボリックリンクのことです ( No.49 ) |
|
- ????????? 2012/11/25 18:01
- ????????? みかん
-
しずくちゃん、さんへ
管理者さまへ
ほんとうに貴重なお時間を使ってしまい反省いたしております、ありがとうございました。 正直、レスが長くなってしまってこの先どうしようかと思っておりました。
>最新のCentOSを導入されることを・・・・ そうなんです、CentoOS6.XX入れたいのですがスペックがたりないのです。 メモリー256MBなのです(古いpcですから) 5.8以降のサポート切れになったらどうしょうかと思っています。
>OSをインストールしたら、まず最初に yum update でパッケージすべてを最新版にしてから >作業を始めた方がいいです。インストール直後が最新とは限りません。 なるほど、また新しいことを知りました、ありがとうございます。
>文字コードの扱いさえ気をつければ、EUCやUTFでの問題は特に既視する必要はありません こんど新たに始めるときがありましたらUTF-8で構築してみます。
お世話になりました。
|