- ベストアンサー
パーミッション?パスの変更?を教えてくださいm()m
いつもお世話になります。 会社HP作ってます。 はじめFC2でサーバーをレンタルしたのですが、 自作CGI(DLで取得し、少し手を加えたものです)が使えないことが分かり、FFFTPを使いinfoseekで登録しなおしました。 アップロードするとこんな画面になります。 ↓ 呼び出されたURLの表示は拒否されました(403FORBIDDEN) 以下のような理由が考えられます ・iswebサイト以外からのCGI呼び出しは禁止されています ・ファイル、デキレクトリのパーミッションが不適切です ・CGIはcgi‐binディレクトリに設置してください そこで、メールフォームをDLした手順書を見てたのですが、 ■設置したいフォルダに静的ファイル群をアップする。→cgi‐binフォルダを作りその中に入れました。 また、HTML内で指定されているsend.cgi、include.cgi、postcodes/get.cgi?jsまでのパスを変更してください→この意味がさっぱり解りません・・・・・。 ちなみに、パーミッションの変更は、 FFFTPでホストに接続して、右側にあるフォルダを右クリックし、「属性」を変更すれば良いのですよね?(この方法で、指示してあった番号に書き換えました) 宜しくお願いします
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 > メールフォームですが、www.synck.com/contents/download/cgi-perl/mailform.html メールフォームプロCGIをDLさせていただいてます。 上記のマニュアルの最初の部分だけ目を通しました。 iswebの仕様と「ファイルの説明」と「設置」のところを読む限り、質問者様の環境は「設置」の右側の方のケース「cgi-binなど特定のフォルダでしか動かない場合」に相当すると思われます。 であれば、このマニュアルの「ファイルの説明」に書いてある通り、 > index.htmlやその他のファイル、あと、image(写真等)のフォルダがある状態です。そこにcgi-binというフォルダを作り、その中に上記のメールフォームを全部入れています。 ではなく、左側の”静的ファイル群”は通常の他のWebコンテンツと同じ場所に置きます。例えば、質問者様のサイトのホーム(トップページ)が http://あなたのiswebライトID.hp.infoseek.co.jp/index.htmlだとしたら、”静的ファイル群”の置き場所は、 http://あなたのiswebライトID.hp.infoseek.co.jp/の直下にまとめて置くか、あるいは更にサブフォルダ(例えば"form"とか…)を作ってそこに置くかは自由ですが、cgi-binフォルダの中には置かない、という事です。 そして、右側の”動的ファイル群”は作成したcgi-binフォルダの中に置きます。 > 階層違い・・・というのがイマイチわからなくって・・ 以下はサイトの構造として考えられる一例です。 http://あなたのiswebライトID.hp.infoseek.co.jp/ ├ index.html…ホーム(トップページ) ├ hoge.html…既存のコンテンツ ├ hoge…既存のフォルダ (以下省略) ├ form(静的ファイル群の置き場所) │ ├ example.html │ ├ thanks.html │ ├ commons │ │ ├ mailform.css │ │ (以下省略) │ │ └ trace.js │ └ images ├ cgi-bin(動的ファイル群の置き場所) │ ├ mailformpro │ │ ├ send.cgi │ │ (以下省略) │ │ └ .htaccess.txt │ └ postcodes │ └(以下省略) example.htmlが所謂フォームのエントリー画面であり、この中に出てくる以下の三箇所のCGIスクリプトの呼び先を、”example.html”から見て上記の様な実際のディレクトリ構造に沿う様にパスを変更しなければならない、という事です。 <script type="text/javascript" src="postcodes/get.cgi?js" charset="UTF-8"></script> <form id="mailform" method="post" action="mailformpro/send.cgi" onsubmit="return falsesubmit(this)"> <script type="text/javascript" src="mailformpro/include.cgi" charset="UTF-8"></script> > 階層が合っているか、から調べてみようと思います☆頑張ってみます 頑張って下さい。
その他の回答 (5)
- abril
- ベストアンサー率69% (388/560)
No.1-2です。 改めてiswebライトの仕様に目を通しましたら、確かに「sendmail:使用不可※上位プランのiswebベーシックでご利用いただけます。」とありますね。 そして、ご使用のメールフォームのPDFマニュアルの「まずはじめに」の動作環境に「sendmailかpostfixが使えて」と明記されています。 つまり、No.3-5様のご指摘の通りですね。 残念ですが、このメールフォームは質問者様の現在の環境では条件を満たしていない為、「動作しない」事になります。 私のアドバイスは、あくまでこのメールフォームが使える動作環境である事を前提としたものですので、sendmail(かpostfix)が使用可能な環境に切り替えない限りは役に立ちませんので悪しからず…
お礼
何度も何度も、私の意味不明な質問に丁寧にアドバイスくださり有難うございました。 ベーシックプランで契約しても良いか、一度確認してみます。 これまで色々と勉強になりました^^ 有難うございました。これからはもっと自分の力でボチボチ頑張ってみます^^;お仕事頑張ってください☆
- outbrave
- ベストアンサー率60% (231/380)
http://isweb.www.infoseek.co.jp/info/iw_lite_if.html ちゃんと見ましたか? ほぼ間違いなく、iswebライトでは、sendmailは使えません! >【HTML内で指定されているsend.cgi、include.cgi、postcodes/get.cgi?jsまでのパスを変更してください】と書いてあります。 htmlファイルの <form id="mailform" method="post" action="mailform/send.cgi" onsubmit="return sendmail(this);"> つまり、HTMLファイルから見て、send.cgiがどこにあるかを指定します。 ここが間違っていると、404エラーになり、403エラーとはなりません。 他のパスも同じ要領で。 ここのパスとは、HTMLファイルからCGIファイルへの相対パスのことです。 >shのパス /usr/bin/sh shのパスではなく、sendmailのパスです! ここのパスとは、CGIファイル内に記述する、絶対パスのことです。
お礼
いつも有難うございます。 確認したつもりだったのですが・・・ パスに関しても勉強不足ですみませんm(。。;)m もう一度サーバーを探してみます。
- outbrave
- ベストアンサー率60% (231/380)
それでは、sendmailのパスを設定する必要がありますが、パスはご存知ですか? 各パスは、HTMLファイルではなく、cgiファイルに書きます。 どのファイルに書くかは説明書をご覧ください。 私の使用していた、iswebライトは、sendmail使用不可なのでわかりません。 参考URLの下のほうに、sendmailの欄がありますので、もう一度確認きてください。
お礼
ありがとうございます。 CGIについてinfoseek isweb内で調べてみたら perlのパス /usr/local/bin/perl shのパス /usr/bin/sh とあり、多分このことだと思うのですが、 どこに書けばいいのか・・・。 >各パスは、HTMLファイルではなく、cgiファイルに書きます。 説明書には、 【HTML内で指定されているsend.cgi、include.cgi、postcodes/get.cgi?jsまでのパスを変更してください】と書いてあります。 多分、間違っているのは「パスの変更」で間違いないとは思うのですが、どこをどう変更すればよいのか教えて欲しいですm(__;)m
- outbrave
- ベストアンサー率60% (231/380)
iswebライトでは、sendmailが使用できなかったのでは? 1.CGIがsendmailを使用しているか調べる 2.sendmailが使用可能か、iswebで調べる CGIがsendmailを使用するのに、サーバー側でsendmailを使用できないと、動きません。 ただし、今回の403エラーの原因が、sendmailかどうかは不明です。
お礼
アドバイス有難うございます! 調べてみましたが、sendmail使えるようです!
- abril
- ベストアンサー率69% (388/560)
「iswebライト」プラン(http://あなたのiswebライトID.hp.infoseek.co.jp/)というやつですか? ・iswebサイト以外からのCGI呼び出しは禁止されています →フォームのHTMLファイルから呼び出しているCGIスクリプトの場所が別のサーバ上になっている。 【例】<form method="post" action="http://www.hogehoge.com/cgi-bin/hoge.cgi"> が、上記の様にわざわざ別のサーバを具体的に指定する様な書き方をしているとも考えにくいので、単純に階層間違いとかをしている可能性もあります。 ・ファイル、ディレクトリのパーミッションが不適切です →cgi-binフォルダやCGIスクリプトのファイルは実行権限を持ってなければ稼働しません。 これは指示に従って変更済みの様ですから、クリアしているのでしょう。 ・CGIはcgi-binディレクトリに設置してください →これは「cgi‐binフォルダを作り」とありますが、このプラン上では任意の場所にcgi-binディレクトリを作って動かせる様になっているのでしょうか? もしかして決められた場所に既にcgi-binディレクトリが設置されているのでは?だとしたらそのディレクトリ内にCGIスクリプトを置かないと稼働しないと思いますが。 ちなみに、 ×cgi‐bin(ハイフン?が全角) ○cgi-bin です。単に記述ミスだと思いますが、もしフォルダ名がそうなっていたら正しくありませんのでご注意を。 > 設置したいフォルダに静的ファイル群をアップする。→cgi‐binフォルダを作りその中に入れました。 「静的ファイル群」と言っているところをみると、これらはCGIスクリプトそのものの事ではなく、参照元のHTMLファイル(formタグでCGIスクリプトを呼び出しているform.htmlなど)の事を指しているのでは?通常、それらのHTMLファイルはcgi-binフォルダに入る必要はありません。他のHTMLファイルと同じ扱いで良い筈です。 > また、HTML内で指定されているsend.cgi、include.cgi、postcodes/get.cgi?jsまでのパスを変更してください→この意味がさっぱり解りません・・・・・。 自分が使用しているサーバの環境によって、実際にCGIスクリプトを置ける領域というのは変わってきますので、HTML内から参照するCGIスクリプトのパスは一律ではありません。依って、それぞれの環境に合う様に、それらのHTMLから見て「実際にCGIスクリプトがある場所までのパス」に書き直して下さい、という事だと推測されますが。
お礼
そうです! >「iswebライト」プラン(http://あなたのiswebライトID.hp.infoseek.co.jp/)というやつですか? これで登録してます。 メールフォームですが、 www.synck.com/contents/download/cgi-perl/mailform.html メールフォームプロCGIをDLさせていただいてます。 階層違い・・・というのがイマイチわからなくって・・ 今、デスクトップ上の「テンプレート」というフォルダの中に、 index.htmlやその他のファイル、あと、image(写真等)のフォルダがある状態です。そこにcgi-binというフォルダを作り、その中に上記のメールフォームを全部入れています。 一応ブラウザ上で画面ば出てくるんです。でも、テスト送信をしようとすると、(最後に”送信”を押すと)呼び出されたURLの表示は拒否されました(403FORBIDDEN) と出てきます・・・ infoseekの説明によると、cgi-binフォルダは「CGIを使うときはフォルダを作ってください~」だったので、用意されてはなかったと思います。 で、FFFTPですが、まず「テンプレート」フォルダからアップしたcgi-binが左側に出てますよね?それを、ドラッグして右側に移した状態です。 >×cgi‐bin(ハイフン?が全角) 確認したらハイフンは半角で合ってました。 >それぞれの環境に合う様に、それらのHTMLから見て「実際にCGIスクリプトがある場所までのパス」に書き直して下さい、 パスというのはttp://www.hogehoge.com/cgi-bin/hoge.cgiというようなやつですよね?? すみません。。手探りでやってるため基本的な事なのでしょうが、ちんぷんかんぷんなんです(汗 こんな私にでもとても分かり易い説明で、大変参考になりました!! まず、階層が合っているか、から調べてみようと思います☆ 頑張ってみます^^/有難うございました!
お礼
大変分かり易く丁寧にご回答くださり、とても感謝してます!! 有難うございます^^ あれからまず、静止ファイル群を「form」というフォルダを作り、その中に入れてみたら、ブラウザで確認したときに校正がかなり崩れていたので、直下にまとめて置いてみたらその点はOKでした^^; その後、構造の図(実際にメールフォームプロを見ていただいたんですよね!これにはかなり感激してしまいました涙。丁寧に有難うございます) おかげで構造は「なるほど!」という程度にまで理解できるようになりました!その下に書いてくださっている(答え??と思った^^;)パス?ですが、 (1)<scripttype="text/javascript"src="commons/jquery.js"charset="UTF-8"></script> (2)<scripttype="text/javascript"src="commons/mailform.js"charset="UTF-8"></script> (3)<scripttype="text/javascript"src="postcodes/get.cgijs"charset="UTF-8"></script> これを書き換える、という事ですよね!?(番号は別です) 初め、(3)のみが同じだったため、 (3)<script type="text/javascript" src="postcodes/get.cgi?js" charset="UTF-8"></script> <form id="mailform" method="post" action="mailformpro/send.cgi" onsubmit="return falsesubmit(this)"> <script type="text/javascript" src="mailformpro/include.cgi" charset="UTF-8"></script> として確認してみたら、 ・カーソルを乗せた部分の色が変わらなくなった→以前は変わっていた ・「送信」ボタンを押してもエラーも何も表示されず、固まった状態でもないが何も変化しなくなってしまった ので、 元のに戻し(順番だけ変えて) (3)(2)(1)で確認してもまた同じでした。 また順番を(1)、(2)、(3)に戻すと画面だけは元通りに戻ります。でも送信するとエラーの状態ですが・・。 CGIについてinfoseek isweb内で調べてみたら perlのパス /usr/local/bin/perl shのパス /usr/bin/sh とありました。これは、HTML内のどこかに入れ込む必要があるってことなんですか?? /bin/とあるので、これが >ディレクトリ構造に沿う様にパスを変更しなければならない、という事です。 という意味ですよね! 何度も甘えてしまい申し訳ないのですが、教えてください・・m(__)m