カテゴリー別アーカイブ: perl

Serversman@vpsでPerlを動かす。

index.cgiが動いてくれずに悶々としながらぐぐっていると、apacheのエラーログを見ろとあったので見てみた。

apacheのエラーログには以下のようなエラーがあった。

(2)No such file or directory: exec of '/home/html/index.cgi' failed

index.cgiファイルは確かにあるのに。。。

さらにぐぐると、改行コードがCR+LFだと上記のエラーがでるとあったので、
改行コードをLFにしたら見事解決。

もともと、windows7 + xamppでは動いていたんですよね。
開発環境はLinuxにしたいなぁ。。

あー疲れた。

PHPのincludeをPerlでやる。

僕は、Perlは5回くらいしか弄ったことのない超ビギナーレベルです。

PHPでいうinclude関数っぽいのが無いっぽい。
やりたいことは.htmlファイルの読み込みです。中身はhtmlのみ。スクリプトは入っていない。
下記のサンプルをコピペしたらうまくいった。感謝です。
ファイル名だけでなく、パス + ファイル名でもOKでした。

# --------------------------------
# get external file
# --------------------------------
open(DATAFILE, "< inc/data.html") or die("Error");

while(my $line = <DATAFILE>){
  chomp($line);
  print "$line";
}

close(DATAFILE);

しかし、外部ファイルが存在しない時とかにエラーがブラウザに出力されない。
とかとか、挙動を把握してないけど、時間無いので今回はスルーしよう。。。

serversman@vpsでperlを動かす。

phpのノリで
#! /usr/bin/perl
print 'ほげー';

とかいても
Internal Server Error
になるだけらしい。

#! /usr/bin/perl
print "Content-type:text/html\n\n";
print 'ほげー';
で動いた。
パーミッションいじりまくったんですが、
全然関係なかったですねー。(´・ω・`) ショボーン

まぁまた一つなにか学べた気がしたのはよかったです。

追記:cgiを有効にするために必要な設定。

index.cgiとかを作ってブラウザでアクセスしても403 Forbiddenになってしばらくボー然。
下記2行とも必要なのを忘れてました。

<Directory "/home/testuser/public_html">
    Options ExecCGI
    AddHandler cgi-script .cgi
</Directory>