はじめまして。大変有用なプログラムを提供して頂き、感謝いたします。
MTから貴プログラムへの乗換えを検討しており、現在テスト中です。
環境はレンタルサーバー
公開ディレクトリの上位ディレクトリにアクセスができ、SSIは使えるものの上位ディレクトリからのincludeが禁止されているため、
マニュアルを参考に、public_html直下にサブディレクトリを作成。
その中にcgi-dataフォルダとhtdocsフォルダ(名称変更)を作成し、各ファイルをアップロードしましたが、500エラーが出るため、KCatchで調べました。
その結果、モジュールへのパスが誤っている(つまり、間違いは当方にあります)ことが原因と判りました。
パスを見直しているときに、もしかしたらとんでもない勘違いをしているのではないかと気づき、恥を忍んでお尋ねします。
設定ファイルであるenv.plに、「CGIの位置」「データベースディレクトリの位置」などを相対パスで記述する箇所が複数ありますが、これらの「CGI」はどれを指すのかを教えてください。
マニュアル、ムービーから推察し、実行してみましたが、なかなか「Can't locate --」が解消できず苦闘しています。
初歩的な質問で申し訳ありません。
こんばんは。
ご質問ありがとうございます。
env.pl 中の "CGIから見た相対パス" でいう CGI とは、/cgi/***/start.cgi のことを指しています。*** は、setup など各種 CGI のフォルダ名です。
CMONOS.JP では SSI でファイルを埋め込む際、<!--#include virtual="***"--> で指定します。(SSI呼びだし元ファイルはすべて HTTP 公開ディレクトリより下の階層に作成されます。)
<!--#include file="***"--> で指定する場合、指定先パスに制限があるレンタルサーバはよくありますが、virtual での指定に制限があるレンタルサーバはあまりないのではないかと思います。
もしデフォルトの env.pl の設定で設置をお試しでない場合は、一度デフォルトの状態でお試しいただければ幸いです。
下位ディレクトリにインストールする場合でも、「cgi-data」と「htdocs」の相対的な位置関係が変わらない限り、各種パス情報を変更する必要はありません。
SSI に制限があり virtual での指定ができない場合は、env.pl の 86行目を $ssi = 0 とすることで、JavaScript による埋め込みに変更することもできます(非推奨)。
ご質問内容から、かなり細かい情報にまで目を通していただたものと拝察いたします。また、SSI についても過去に苦労されたご経験があるのではないでしょうか。
もし、既にデフォルトの設定でお試しになられたのでしたら、失礼をおわびいたします。
その場合は、どの設定をどう変えられたのか具体的に書いていただきますと、解決のヒントとなります。
以上よろしくお願いいたします。
早々にレスをいただいたのに、結果のご報告が遅くなり申し訳ありません。
1.頂いたアドバイスに従い下記の構成で設置
しましたが、トップ→セットアップアシスタントにアクセスすると、
CMONOSがlib以下が見つからない旨の Can't locate エラー(KCatch使用)が出てしまいます。
cgi-dataを読んでいないようなので、試しに
htdocs/cgi/setup/default.pl内、
use liv行とrequire env.pl行のパスを配置に合わせて書き換えたところ、Can't locate エラーは出なくなりましたがセットアップはできません。
なお [an error occurred while processing this directive]というおなじみの曖昧エラーはずっと出ております。
|-public_html|-index.html(既存サイト) |-hogefolder-(htdocs内全て)
2.env.plをほぼデフォルトで使用するため、場所をpublic_html以下に移動し以下のように設置。
env.pl の「最上層ディレクトリのパス」のみ、/hoge と書き換えました。
|-hogefolder-(htdocs内全て)
やはり設定はできず、
[an error occurred while processing this directive]エラーも出ています。
まず、[an error occurred while processing this directive]エラーから解決しようと思い、
アスキー、バイナリを手動で指定してファイルを再アップ。
さらに下記のようなテストを行いました。
(エラーが出たもの→×、includeしたファイルが表示できたもの→○)
1.#include file で同階層にあるtxtを表示→○
2.#include virtual で同階層にあるtxtを表示→○
3.#include virtual="/***/dummy.text"
で1つ下の階層のtxtを表示→×
4.#include virtual="/ルートからのパス/***/dummy.text"
で1つ下の階層のtxtを表示→○
ここまでテストしてみましたのでご報告します。
さらにテストを続け、またご相談させてください。
長々と書き連ね、申し訳ありません。
もうしわけありません。
サイト構成の記述が大幅にずれてしまいました。
修正
1-1
2-1
これで整形できたでしょうか?
経過のご報告ありがとうございます。
まずはじめに、問題を切り分けさせていただければと思います。
SSI は、CMONOS.JP の CGI の動作には影響しません。SSI は、CMONOS.JP が書き出す静的HTMLファイルが外部ファイルを表示するために利用されます。SSI の設定が原因となる不具合が出るとすれば、トップページなどを書き出した後となります。
エラーの原因は特定できないのですが、FTPでのアップロードについてひとつ気になる点がありました。
FTPでのアップロードはすべてバイナリモードでお願い致します。この点はマニュアルにも明記されておりませんでした。次回配布時に追記いたします。
アスキーモードとは具体的には、改行コードや文字コードを環境に合わせて変換するモードです。
そのためアスキーモードでは、CGI スクリプトの内容が予期せぬ場所で変換される場合があり、時折不具合を発生させます。CMONOS.JP のスクリプトファイルは、UNIX 系OSでの動作を前提に、あらかじめ改行コードおよび文字コードがLF・EUCとなっていますので、何も変換せずアップロードするバイナリモードをお使いください。
参考書等では CGI はアスキーモードでアップロードするよう書かれていることが多いようですが、特に日本語の混じったスクリプトではアスキーモードでアップロードすると不具合のもととなる場合があります。
サイト構成につきましては、1の場合は全てのCGIについてライブラリ呼び出しパス等を書き換えなければ動作しません。
2の場合は、env.pl の「最上層ディレクトリのパス」のみ、/hoge と書き換えるだけで、大丈夫です。
以上参考になれば幸いですm(_ _)m。
【追記】
[an error occurred while processing this directive]
は、SSI 埋め込みファイルがみつからないときなどに表示される SSI のエラーです。
通常のインストールとは異なる位置にトップページが存在する場合、必ずこのエラーが表示されます。
CMONOS.JP のインストール後 CMONOS.JP が正常に動作していれば、トップページを「最新のテンプレートを使う」チェックボックスにチェックを入れて保存することで、このエラーを解消することができます。