No.21359 投稿時間:2007年02月21日(Wed) 20:46 投稿者名:AI URL:
こんにちは
Apache2.0.55 と mod_layout4.0.2aを使用して
全ページにCGIでコンテンツを埋め込もうと考えていますが
<Directory /home/*/public_html>
AddOutputFilter LAYOUT html
LayoutFooter /home/web/adget.cgi
</Directory>
と記述すると、ソースがそのまま埋め込まれてしまいます
直接アクセスするときちんと実行できます
http://mm.apache.or.jp/pipermail/newbie/2003-May/003734.html
の例を見る限り、Perlも同じような感じだとは思うのですが
全ユーザーディレクトリに対して同じ事を行いたい場合
全てのディレクトリにadget.cgiを用意するしかないのでしょうか
No.21363 投稿時間:2007年02月22日(Thu) 15:15 投稿者名:わらび URL:
> こんにちは
> Apache2.0.55 と mod_layout4.0.2aを使用して
> 全ページにCGIでコンテンツを埋め込もうと考えていますが
>
> <Directory /home/*/public_html>
> AddOutputFilter LAYOUT html
> LayoutFooter /home/web/adget.cgi
> </Directory>
>
> と記述すると、ソースがそのまま埋め込まれてしまいます
> 直接アクセスするときちんと実行できます
LayoutFooter /~web/adget.cgi
でいけると思います。
>
> http://mm.apache.or.jp/pipermail/newbie/2003-May/003734.html
>
> の例を見る限り、Perlも同じような感じだとは思うのですが
> 全ユーザーディレクトリに対して同じ事を行いたい場合
> 全てのディレクトリにadget.cgiを用意するしかないのでしょうか
/home/webだけで、OKです。上の設定がそうなっています。
No.21365 投稿時間:2007年02月22日(Thu) 19:34 投稿者名:AI URL:
> LayoutFooter /~web/adget.cgi
> でいけると思います。
何も表示されませんでした
ユーザーディレクトリ関連の設定はしていないので、そのためかもしれません
CGIはひとつ置けばいいのなら、どこに置いても構わないので
他の表現方法はありませんでしょうか
お手数をお掛けして申し訳ありません
No.21367 投稿時間:2007年02月22日(Thu) 23:11 投稿者名:わらび URL:
> 何も表示されませんでした
> ユーザーディレクトリ関連の設定はしていないので、そのためかもしれません
> CGIはひとつ置けばいいのなら、どこに置いても構わないので
> 他の表現方法はありませんでしょうか
> お手数をお掛けして申し訳ありません
あ、すみません。間違えました。
LayoutFooter ~/web/adget.cgi
の設定だったので、
/home/web/public_html/adget.cgi
に置けばよかったと思います。
LayoutFooter等の設定で記載するパスは
システムディレクトリではなく、
Apache上のディレクトリです。
なので
LayoutFooter /adget.cgi
なら、DocumentRootで設定している
/var/www/htmlなどになります。
システム上の「/」には、ならないはずです。
なので、管理しやすい場所で
いいかと思います。
また、エラー等出た場合には、
エラーログを参照すれば、なんらか手がかりが
みつかると思います。
No.21371 投稿時間:2007年02月23日(Fri) 23:06 投稿者名:AI URL:
読み込みはされましたが、実行はできませんでした
やはり、CGIのソースがそのまま表示されてしまいます
ログを見てもエラーではないので厳しいですね・・・
No.21372 投稿時間:2007年02月24日(Sat) 01:50 投稿者名:わらび URL:
>読み込みはされましたが、実行はできませんでした
>やはり、CGIのソースがそのまま表示されてしまいます
設定は、LayoutFooter ~/web/adget.cgiですか?
実ファイルは/home/web/public_html/adgetですか?
ソースがそのまま表示されてしまうというのは
CGIの設定に問題があるように見えます。
ユーザディレクトリに設置したなら、
OptionsはデフォルトでCGIはOFFになっています。
結果、ソースが表示されます。
一度、LayoutFooterで設定した値で
直接アクセスできるか確認してみて下さい。
ちなみに、debian sarge + apache 1.3.33 + layout 3.2.1-2
で問題無く表示できました。
No.21374 投稿時間:2007年02月25日(Sun) 01:31 投稿者名:AI URL:
> ソースがそのまま表示されてしまうというのは
> CGIの設定に問題があるように見えます。
> ユーザディレクトリに設置したなら、
> OptionsはデフォルトでCGIはOFFになっています。
> 結果、ソースが表示されます。
承知しています
> 一度、LayoutFooterで設定した値で
> 直接アクセスできるか確認してみて下さい。
ブラウザから直接CGIのURLを指定すれば
問題なく実行できます
> ちなみに、debian sarge + apache 1.3.33 + layout 3.2.1-2
> で問題無く表示できました。
探してても全然こういう事例がないんですよね・・・
全部やり直すわけにもいかないのが辛いところです
本当に困っているので、設定ファイルをUPしてみました
(一部記述は変えてあります)
http://ai.srv7.biz/conf.txt
インストールはVine Linux 3.2からapt-getでしました
ちなみにApache1.3で同じ問題が起きて
望みをかけて2.0にアップデートしても同じ問題にハマるという状況に陥っています
No.21376 投稿時間:2007年02月25日(Sun) 20:36 投稿者名:わらび URL:
> 本当に困っているので、設定ファイルをUPしてみました
> (一部記述は変えてあります)
> http://ai.srv7.biz/conf.txt
設定みました。
現設定だと「/home/app/public_html」配下しか
Layoutモジュールが有効になりませんが、よろしいですか?
ユーザディレクトリ配下を有効にするのだと思っていたので。
Virtualhostの設定がされていて、rewriteもかかっている為、
どこが原因なのかわからないので、一度Virtualhostの設定を外して
Layoutだけで確認してみてください。
単純にLayoutだけで、稼動するのか試してみたいので。
具体的には、
・Virtualhostのディレクティブをすべてコメントアウト
・DocumentRootである/home/ai/html/hoge/wwwに、CGIを置いて直接アクセスしてOKであること。
・/home/ai/html/hoge/wwwディレクティブにLayoutの設定を入れる。
「LayoutFooter /elle.cgi」こんな感じで。
・アクセスして確認。
それと、
/etc/apache2/conf.d/*.confが読み込まれているので
余計な物が無いか確認してください。
No.21383 投稿時間:2007年02月26日(Mon) 18:34 投稿者名:AI URL:
> Virtualhostの設定がされていて、rewriteもかかっている為、
> どこが原因なのかわからないので、一度Virtualhostの設定を外して
> Layoutだけで確認してみてください。
> 単純にLayoutだけで、稼動するのか試してみたいので。
>
> 具体的には、
> ・Virtualhostのディレクティブをすべてコメントアウト
> ・DocumentRootである/home/ai/html/hoge/wwwに、CGIを置いて直接アクセスしてOKであること。
> ・/home/ai/html/hoge/wwwディレクティブにLayoutの設定を入れる。
> 「LayoutFooter /elle.cgi」こんな感じで。
> ・アクセスして確認。
>
> それと、
> /etc/apache2/conf.d/*.confが読み込まれているので
> 余計な物が無いか確認してください。
外して見たところ、うまく動いたので
rewriteを使わずに全部Virtualhostで記述したらちゃんと動きました
確かにrewriteはDocumentRoot等の値がおかしくなるので
大変ですが全部記述することにします
ありがとうございました
No.21386 投稿時間:2007年02月27日(Tue) 01:33 投稿者名:わらび URL:
ごめんなさい、うそついちゃいました。
>LayoutFooter等の設定で記載するパスは
>システムディレクトリではなく、
>Apache上のディレクトリです。
以前、この様なことを書いたのですが・・・
以下のテストをした結果、違うことがわかりました。
DocumentRoot /tmp/
LayoutHeader /a.html
/a.html
/tmp/a.html
↑両方を設定してみた。
結果、/a.htmlが優先されました。
もちろん/a.htmlがなければ、
/tmp/a.htmlを読みにいきます。
ですが、システム上の場合(上の例だと/a.html)には、
キャッシュHTMLとなってしまって、CGIなどのスクリプトは
無効になってしまうそうです(ソースが表示される)。
>rewriteを使わずに全部Virtualhostで記述したらちゃんと動きました
自分でもいろいろやったのですが、ちょっといけてない形になってしまいました
具体的に、どのように設定しましたか?
>大変ですが全部記述することにします
・A.foge.net → foge.net/~A/ (ユーザのホームディレクトリ)にする。
・Layoutを使う
これをやるんですよね?
rewrite_moduleかvhost_alias_moduleで、できますが、
スクリプトを全ディレクトリに配置するか、
ScriptAliasのように、cgi-binをマップする
といった形になるため、あまりいけてません。
こちらが、参考になります。
http://httpd.apache.org/docs/2.0/ja/vhosts/mass.html
解決策としては、素直にfoge.net/~A/でアクセスさせるか、
layout_module以外のモジュールを探すってところですかね。