ZAKKI|逃げるけどこれは作戦だぞ

バイオハザードのネタ

さくらサーバーでkent-webさんのショッピングカートを使う際につまずいたこと

calendar

reload

さくらサーバーでkent-webさんのショッピングカートを使う際につまずいたこと

sakuraサーバーでKent-webさんのプログラムを使おうとして動かなかったこと

さくらインターネットのレンタルサーバー環境のホームページに、カート機能を付けなくてはならなくなり、本格的なEC環境を構築する予算がなく、CGIプログラムを条件付きで利用できるkent-webさんのカート機能のCGIプログラムを利用させていただくことにした。その際にうまく動かなかったのだが、あれこれやっていたら動いたので顛末を書いて置きたい。

kent-webさんはすばらしい

kent-webさんは開発会社のようです。信用ある会社のようですね。何故なら、さくらのレンタルサーバーのクイックインストールには、kent-webさんのメールフォームプログラムが利用できるようになっている。数多ある開発会社やの中から選ばれており、きっと多くの実績や評価があっての採用だと思います。どうして条件付きで公開されているのか不思議だけれど、きっと他にお仕事がたくさんあるのでしょう。こちらはライセンスを遵守して利用させてもらって大変助かっています。ほんとうにありがたい。カスタムプログラムの必要があり、予算があったらkent-webさんに相談してみようと心に決めた。

さくらでのトラブルは他にもある

さくらのクイックインストールで設置できるメールフォームは、kent-webさんのホームページで公開されているものと同じものである。以前、このプログラムを利用しようとしてホームページからダウンロードして、さくらのレンタルサーバーに設置してみたが、Internal Server Error500になって動かなかった。当然ネットで解決策を探してみたが、同じ事象が起こった方は他にもいて、解決策などを公開されていた。これらは概ね以下のものだ。

  1. perlのパスが間違っている
  2. sendmailのパスが間違っている
  3. パーミッションが間違っている

この全てを何度も確認して、トライ&エラーを繰り返してみたがいっこうに動かなかった。、Internal Server Error500のままだった。その時は、煮詰まっており、さくらのコントロールパネルを呆然といじっていたら、クイックインストールにメールフォームプログラムがあるのを発見して、詳しくみてみるとkent-webさんのプログラムだった。半信半疑でクイックインストールから設置してみたら、当然ながら正常に機能した。不思議に思ってperlとsendmailのパスを確認すると、コントロールパネルのサーバー情報に表示されているものと同じだった。当然と言えば当然である。私も同じパスを書いていたのだが、、Internal Server Error500で動かなかった。何が違うのかと探してみたら、結局はパーミッションが大きく違っていた。その時とは忙しくてwebページに残しておけなかったが、覚えていたのは、kent-webさんの公式の設定とは異なっていたこと。ネットに書かれていたものや、公式ページで紹介されていたパーミッションとは異なっていた。これはさくらさん独自の事象なのだろうか。

カート設置で起きたこと

カートプログラム設置で起きたことも、メールフォーム設置の時と同じ状態だった。Internal Server Error500だ。そこでカート設置をひとまず諦め、付属のcheck.cgiを動かすことに目的を変更した。ただし、今回はさくらのクイックインストールでメールフォームを設置してみて、perl、sendmail、パーミッションなどを比べてみた。

比べてみてわかったこと

さくらのクイックインストールと比べてわかったこと。驚いたのがperlのパスが異なっていたこと。そんなバカなことがあるのか。

  • さくらのクイックインストールでのcheck.cgiのperlのパスは、/usr/local/bin/perl
  • さくらのサーバー情報での表示されているperlのパスは、/usr/bin/perl
sakura-perl-path01

さくらクイックインストールのcheck.cgiのperlのパス

 

・・・どうしてなのか、わたしにはさっぱりわからない。ちなみにsendmailのパスは、サーバー情報と同じ/usr/sbin/sendmailだった。そもそもUNIXやらPerlやらサーバーやcgiプログラムなどに関しては素人同然なのだ。だから自分で書かずにkent-webさんのプログラムを利用させていただいている。それからほかにもある。

  • さくらのクイックインストールでのchekc.cgiは文字コードがSHIFT-JIS
  • kent-webさんからダウンロードしたcheck.cgiはUTF-8

この違いも、私にはさっぱりわからない。

じゃあ同じにすれば良い

なぜ違うのかわからなくても、違う箇所がわかったのだから、同じにすれば機能するはずだ。調べてみても、いまからでは学習しなくてはならないことが多すぎてとても間に合わない。まずは自分の役割をしなくては。やることは以下のとおり。

  1. perlのパスを/usr/local/bin/perlにする
  2. 文字コードをSHFT-JISに変換して保存する
  3. パーミッションをクイックインストールと同じにする

以上を行なってアップロードしてみた結果・・・・。やっぱり動かない。Internal Server Error500だ。時間はもう深夜だ。当然もう帰れない。電車はない。

悪戦苦闘

どうせ帰れないなら、思う存分悪戦苦闘しようじゃないか。様々なことを試してみた。パーミションを色々変えてみたり、perlのパスを戻してみたり、文字コードをEUCにしたり、さらにネットで検索したり。でも結果は同じ。check.cgiすら動かない。3時間以上経っていたことに気がついて、諦めてトイレに行こうと思いかけたときに。

エディタを変えてみた

それまでcheck.cgiやinit.cgiの修正には、sublimeText2(レジスト済み)やSublimeText3(未レジスト)、AtomやBracketsなどを使って行なっていた。もしかしてエディタのせいなのかとも思っていたからだ。でもそんなことあるわけない。ただ、これらのエディタはとても優れたものだが、コーディングに秀でていても、各書類のプロパティを比べるのは得意じゃない。プラグインであるのかもしれないが、少なくとも私にはわからない。何か違って動かないのかを調べるために、古くはMacOS時代から使っているJeditで調べてみた。JeditXだ。

調べてみたらわかったこと

JeditXで、書類情報パネルを出して書類のプロパティをだして、さくらのクイックインストールで設置したcheck.cgiとinit.cgiを見てみたら、これらは文字コードがMacOSに改行がUNIX(LF)だった。

sakura-code01

さくらのクイックインストールのcheck.cgiの文字コードと改行

文字コード(エンコーディング)については、Jeditの初期設定がOS標準のMacOS日本語になっているからだろうが、改行タイプについては完全に注意を怠っていた。SublimeTextやAtom、Bracketsなどはどうなっていたかさっぱり覚えていない。きっとMac版ではCR、Windows版ではCRLFになっているのではないか。

改行タイプをUNIX(LF)にしてみよう

結論だが、改行タイプをLFに変更してcheck.cgi、init.cgiを保存して動作を確認してみたら、これまでとことなるエラー画面になった。Internel Server Errorではなく、line30がどうこうと表示された。ということは、もうパスは通っているのではないか。パーミッションも問題ないのではないか。そこで今度は文字コードをUTF-8、改行タイプをLFにしてみたら動いた。何の役にも立たないかも知れないが、動いた条件を書き留めておく。

  • perlのパスは、/usr/bin/perl
  • sendmailのパスは/usr/sbin/sendmail
  • 文字エンコーディングは、UTF-8
  • 改行タイプはLF
sakura-code02

不思議とこれで動きました

sakura-perl-path02

常識なのかも知れませんが

この条件で動作しました。他の方はわたしのようにならずにすんなりと動くのでしょうが、もしわたしと同じ条件で、何をやっても動作しなかったら、上の4条件を確認してみてはどうかと。もちろんどのような結果になってもいっさいの責任は負えません。おこなうなら、バックアップを取り慎重に行なってください。

でも、どうして・・・

チェックプログラムが動いたのはいいけれど、どうしてさくらのクイックインストールで設置したcgiには、perlのパスが当のさくら自身がサーバー情報と異なっているのだろうか。まったくわからない。

普段、文字コードを意識することはあっても、改行タイプはあまり意識しない。でもサーバーの別のプログラムとのやりとりなどをするときには、とても大事になること。いや、常識なのだから頭に入れておかなくちゃならないと思いました。まだチェックプログラムだけであって、カートそのものが動くかわからないので、結果がでたらまた書いて残しておこうと思います。

でも文字コードや改行タイプはいいとして、なんでさくらのクイックインストールから設置したcgiは、perlのパスが違っていても動くのか謎のまま。

この記事をシェアする

コメント

コメントはありません。

down コメントを残す




逃げるけどこれは作戦だぞ

ZAKKI

ZAKKI

攻略サイトでありません。