• ベストアンサー

#!/usr/local/bin/perlの変更。

┬ cgi_script │   └***.cgi │ └ access_g     └11111       └22222         └***.cgi 今まで、cgi_scriptフォルダの直下にあるcgiファイルの一番上の行は #!/usr/local/bin/perl できちんと動作していました。 今は、そのcgi_scriptフォルダと同じところにあるaccess_gフォルダの中にある、 11111フォルダの下の2222フォルダの下にあるcgiファイルを実行させたいのですが、 #!/usr/local/bin/perl をどのように変更していいかわからなくなってしまいました。 動作させたいcgiファイルはcgi_scriptフォルダの中に入れたところきちんと動作したので、 動作上の問題はないと思われます。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • master-3rd
  • ベストアンサー率35% (582/1641)
回答No.1

それは変更する必要ないですよ。 また、動かない理由としてパーミッション設定をフォルダにもきちんと設定しているでしょうか? CGIによってはフォルダのパーミッションをすべて「777」にしないと動かない物もあります。

KODAMAR
質問者

お礼

回答ありがとうございます。 >それは変更する必要ないですよ。 変えなくてもいいんですか? これが原因だとばかり思っていました。 >また、動かない理由としてパーミッション設定をフォルダにもきちんと設定しているでしょうか? この場合変更するフォルダというのは「access_g」でいいのでしょうか? それとも「22222」のフォルダですか? access_g・11111・22222すべて「777」にしてみましたが、動作しませんでした。 ただ不思議?なのが、1.cgiファイルでフォームに書き込みをして、2.cgiでそのデータを表示&ログファイルに書き込み、という動作をしているのですが、2.cgiでデータの表示はできるのですが、ログファイルに書き込みだけができません。 ただcgi_script内で行うときちんとログファイルに書き込まれました。

その他の回答 (7)

  • qwer021
  • ベストアンサー率24% (70/281)
回答No.8

qwer021です、まだ動作しないでしょうか? パスでは無いようですね、私がCGIでよく使っているデバックですが 宜しければ お使い下さい。 使い方 &debug("inp_form mode=$in{'mode'} pwk=$cpwk"); 関数 sub debug { open(OUT, ">> con_deb.cgi"); print OUT "$_[0]\n"; close(OUT); } つまらない関数ですが 私はデバックの時これをやばそうな所に 一行おきに入れてテストしたりしています。 ??? open (FH,">access.log");          >a の間にスペースなんて関係ないですよね。 私の経験ですが CGIでソースを2~3行変えるだけで動作しなくなることが 多々ありました もう一度動くソースから少しずつ変更した方が早いかも知れませんね。 がんばって下さい。

KODAMAR
質問者

お礼

大分お返事遅れてしまい申しわけありません。 やはりどうしても解消しないようですので、きちんと動くフォルダに入れて様子をみてみることにしました。 ファイルの管理が面倒で仕方ないんですけど…。 ありがとうございました。

noname#151446
noname#151446
回答No.7

よくわからない現象ですね、、、。 試しに open (FH,">access.log") or die $!; としてみてはどうでしょう? これでエラーが発生すればファイルのオープンに失敗しているので エラーログを見て解析すれば解決すると思います。 エラーが発生しなかったらファイルオープンに成功しているので、、、 どういう事でしょう、、、。

KODAMAR
質問者

お礼

回答ありがとうございます。 open (FH,">access.log"); @filew="$buffer<BR>\n"; print FH @filew; close(FH);   ↓↓↓ open (FH,">access.log") or die $!; として実行しましたが、何もエラーは出ていないようです。 うーん、何でしょう??

  • qwer021
  • ベストアンサー率24% (70/281)
回答No.6

こんにちは 皆さんが書かれている通りパスが悪いのでは? open (FH,">./access.log"); ./が必要ではないでしょうか? 変更する前に access.logが何処かに書かれていないでしょうか? 自信はぜんぜん有りません。

KODAMAR
質問者

お礼

回答ありがとうございます。 ./をつけたしてみましたが、やはりダメでした。 ただcgi_script内では./をつけなくても動くので、これでも動くのかな?と思ってしまっていたのですが。。。 ありがとうございました。

noname#225520
noname#225520
回答No.5

もしかして、サーバーの設定でcgi_script直下でしかcgiを許可していないのかも知れません。サーバー管理者に問い合わせてみては如何でしょう?

KODAMAR
質問者

お礼

回答ありがとうございます。 >サーバーの設定でcgi_script直下でしかcgiを許可していないのかも知れません。サーバー管理者に問い合わせてみては如何でしょう? 会社内のサーバーですが、そのような設定をしたおぼえもないし、きいたこともないのですが…。 でも念のためにきいてみます。 もしかしたら知らないうちに設定されてるかもしれないので。 ありがとうございました。

  • master-3rd
  • ベストアンサー率35% (582/1641)
回答No.4

No1です。 No3の方がいっている通りログを置く場所のパスが間違っていないでしょうか? >2.cgiでデータの表示はできるのですが、ログファイルに書き込みだけができません。 表示しているということは書き込みがされているのでは? じゃなくて、確認は出来るけどその後のログに書き込まないということかな? だったら「2.cgi」のログファイルの場所の指定が間違っているかと… 「2.cgi」を開いて「log.dat」(かな?)を検索してみましょう。もしかすると少しずれているのかも。../の数が1個多いとか、少ないとかね。

KODAMAR
質問者

お礼

回答ありがとうございます。 #3の方のところにもかいたのですが、 22222フォルダの中に ・access.cgi ・access.log と両方あります。 ですのでパスが間違っていることはないと思うのですが…。 よろしくお願いします。

  • so_blue
  • ベストアンサー率48% (50/104)
回答No.3

> データの表示はできるのですが、ログファイルに書き込みだけができません ログファイルまでのパスが間違っているとか?

KODAMAR
質問者

お礼

回答ありがとうございます。 ログファイルは同じ22222フォルダの中に入れてあるので間違いないとおもうのですが…。 ちなみにこんな感じになってます。 open (FH,">access.log"); @filew=$value; print FH @filew; close(FH); よろしくお願いします。

noname#225520
noname#225520
回答No.2

/usr/local/bin/perlだと絶対パス指定なので、このままで問題ありません。../../../usr/local/bin/perlのような相対パス指定ですとマズいですが。

KODAMAR
質問者

お礼

回答ありがとうございます。 現象、というか現状は#1の方のところに書いた通りです。 どのようにしたらきちんと動作しますでしょうか? よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう