Awesome Hacks!

プログラミング初心者なので地道に勉強していきます。分からない人の立場から整理していきます。

CGIを作ってみる

早速このページを見ながら設置してみる。
 
テスト用にサブドメイン作成して、そこに置いてみる。
 
しかし、うまくいかない。
 
幾つか考えられそうな事を考えてみる。
 
・どうもCyberduck にはバグがあるとのこと。Macの改行コードはCRであって、UNIXの改行コードはLF。これを変換してくれないらしい。
アップロード前に、変更が必要そう。
 
・.htaccessファイルが不要?
自分が使ってるサーバー、ロリポップでは準備不要との文言を見かけたような…。再確認が必要。保留。
 
CGIスクリプトの場所が適切でない?
確認してみる。
 
他にも色々な理由が考えられるが割愛。
  
 
・「CGIには実行ファイルとデータファイルがあり、実行ファイルには先頭行に「/usr/bin/perl」などの宣言が書かれている。」
 確認したが、問題なかった。
 
 
 
・「ファイルの所有者が自分になっている。nobodyでなくてはならない。」
これはそのまま「usr」のままでも最終的に問題なかった。
 
 
・「CGIの記述で、改行コードがCRになっている。」(CRWindows系サーバで使用する改行コード。ロリポップ!はLinux系サーバ)
 TeraPadCGIファイルを開き、「ファイル」「文字/改行コード指定保存」を実行して、改行コードをLFで指定して上書き保存。
 または、terminalを開いて、「tr \\r \\n <test1.cgi >test1.cgi2」で改行コードを置換
 これは実施。しかし、表示されず。
 
 
FTPソフトを変更し、サーバ上のファイルの内容を確認。
 cyberduckを使用していたが、使いこなせていない自分が悪いのか、権限の変更やファイルの内容、転送モード(テキストモードやASCIIモードでの転送)などの設定が思うようにできなかった。
 結果としてロリポップレンタルサーバーFTPを起動してみてファイル内容を確認したところ、ファイルの内容がおかしなことになっていた。不要な文字列が勝手に記述されていた。原因は不明。
そもそもCGI実行ファイルを作成したあと、ファイル名変更(macなのでテキストエディタだと「test1.cgi.rtf」になってしまうので、viエディタで「test1.cgi」に無理矢理変更)して、さらに転送モードがよく分からない状態でcyberduckでアップロードした、この途中でファイル内容が変わってしまったようだ。
ロリポップレンタルサーバーFTPにてファイル内容の編集も可能だったので正しい内容に書き直したところ、ようやく表示が「エラー」ではなくなった.
十分エラーだが・・・。
  

f:id:tamaking01:20141119005138p:plain

 
 
・そして、さらにロリポップレンタルサーバーFTPを使って確認したところ、CGI実行ファイルが「UTF-8に、「.htaccess」が「ASCII」になっていた。
 どうも、ロリポップでは日本語がないファイルは自動でASCIIになるとかで、「.htaccess」がASCIIであることは問題なさそう。
 ダメもとで、CGI実行ファイルを「Shift-JIS」に変更した。
すると・・・。
 

f:id:tamaking01:20141119010029p:plain

 

ようやく作成できた!!!