- 締切済み
Apache1.3 + mod_layout3.2.1でのエラー
Apache1.3をソースからインストールし、mod_layout3.2.1のインストールも無事終了したのですが、apache1.3を再起動させて実際にアクセスしてみると、500エラーとなってしまいました。 .htaccessの記述は AddOutputFilter LAYOUT html LayoutHeader /var/www/html/header.html LayoutFooter /var/www/html/footer.html としており、apacheのエラーログには [Wed Jan 17 23:45:00 2007] [alert] [client 192.168.1.5] /var/www/html/.htaccess: Invalid command 'AddOutputFilter', perhaps mis-spelled or defined by a module not included in the server configuration と記録されていました。 mod_layoutのバイナリファイルmod_layout.soはlibexec/mod_layout.soに生成され、このパーミッションもhttpd.confへの記述も正常と思われます。 何が原因で上記のエラーが出てしまうのか、ご教授いただけると幸いです。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- Lean
- ベストアンサー率72% (435/603)
>./configure --enable-module=so でコンフィグしてコンパイルしたApache(httpd)で、設定ファイルに >LoadModule layout_module libexec/mod_layout.so と設定しても、モジュールとして組み込んでくれないとしたら、こちらとしてもどうしようもないですね。 FreeBSDの環境ですが、Apache 1.3.37、mod_layout 3.2で上記と同じ手順で行ってみましたが、ちゃんと動作しています。
- Lean
- ベストアンサー率72% (435/603)
>一番下のAddModule mod_layout.cを削除するとこの警告は出なくなります。 httpd.conf内にClearModuleListディレクティブがないなら、AddModuleディレクティブは書かなくていいです。 >LoadModule layout_module libexec/mod_layout.so DSOが有効になっているApacheでLoadModuleディレクティブがあってもモジュールが組み込まれないのはおかしいとしか言えないですね。 Apacheをコンパイルする際のconfigureってどのように実行したのでしょうか?
補足
./configure --enable-module=so で実行しました。
- Lean
- ベストアンサー率72% (435/603)
>LoadModule layout_module libexec/mod_layout.so LoadModule記述の直後ぐらいにClearModuleListとあって、その次からAddModuleの記述が始まりませんか? そのAddModuleの中に AddModule mod_layout.c がありますか? ないならAddModuleの記述の最後にでも追加して、Apacheを再起動してみてください。
補足
LoadModuleの下に記述されていました。 ただ、LoadModuleの下にClearModuleListは有りませんでした。 一応AddModule mod_layout.cを一番下に持って行き再起動させましたが、 Mon Jan 22 17:36:14 2007] [warn] module mod_layout.c is already added, skipping という警告が表示されます。 一番下のAddModule mod_layout.cを削除するとこの警告は出なくなります。
- Lean
- ベストアンサー率72% (435/603)
>DSOが有効になっているなら、httpd.confのモジュールを組み込む部分の設定を載せてください。 で、httpd.confのモジュールを組み込む部分の設定はどうなっていますか?
補足
LoadModule layout_module libexec/mod_layout.so と一行追加し、.htaccessに LayoutFooter /footer.html と記述してアクセスすると [Fri Jan 19 22:16:03 2007] [alert] [client 192.168.1.5] /var/www/html/.htaccess: Invalid command 'LayoutHeader', perhaps mis-spelled or defined by a module not included in the server configuration のエラーが発生してしまいます。
- Lean
- ベストアンサー率72% (435/603)
httpd -lは、コンパイル時にスタティックに組み込んだモジュールの一覧表示なので、DSOで組み込んだモジュールは表示されません。 根本的な事ですが、Apache 1.3.xをソースからインストールしているようですが、DSO(Dynamic Shared Object)を有効にしてインストールしてありますか? DSOが有効になっていないなら、動的にモジュールを後から組み込む事は出来ませんので、再度DSOを有効にしたApacheをインストールしてください。 例) DSOが有効になっているApache %./httpd -l Compiled-in modules: http_core.c mod_env.c mod_log_config.c mod_mime.c mod_negotiation.c mod_status.c mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_asis.c mod_imap.c mod_actions.c mod_userdir.c mod_alias.c mod_access.c mod_auth.c mod_so.c ← DSOを有効にしているとこのモジュールが表示される。 mod_setenvif.c 例) DSOが有効になっていないApache %./httpd -l Compiled-in modules: http_core.c mod_env.c mod_log_config.c mod_mime.c mod_negotiation.c mod_status.c mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_asis.c mod_imap.c mod_actions.c mod_userdir.c mod_alias.c mod_access.c mod_auth.c mod_setenvif.c →mod_so.cが表示されない。 DSOが有効になっているなら、httpd.confのモジュールを組み込む部分の設定を載せてください。
補足
はい。DSOは有効にしてインストールしました。 mod_so.cも一覧に有ります。
- Lean
- ベストアンサー率72% (435/603)
ディレクティブ名に間違いがないなら、モジュールが組み込まれていないとしか考えられませんが。 lsofコマンドが使用できるなら、Apacheを起動した状態でpsコマンドでApache(httpd)のプロセス番号を確認して、lsofコマンドをその確認したApache(httpd)のプロセス番号指定で実行してmod_layout.soが表示される(=オープンされている=モジュールが組み込まれている)か確認してください。 ○FreeBSD上での確認した場合の例 # ps aux <省略> root 4459 0.0 0.4 2792 2284 ?? Ss 11:55PM 0:00.12 /usr/local/sbin/httpd www 4460 0.0 0.5 2792 2316 ?? I 11:55PM 0:00.01 /usr/local/sbin/httpd www 4461 0.0 0.5 2792 2316 ?? I 11:55PM 0:00.00 /usr/local/sbin/httpd www 4462 0.0 0.5 2792 2316 ?? I 11:55PM 0:00.00 /usr/local/sbin/httpd www 4463 0.0 0.5 2792 2316 ?? I 11:55PM 0:00.00 /usr/local/sbin/httpd www 4464 0.0 0.5 2792 2316 ?? I 11:55PM 0:00.00 /usr/local/sbin/httpd <省略> →PIDは、4459、4460、4461、4462、4463、4464 # lsof -p 4460 <省略> httpd 4460 www txt VREG 0,67 9737 448731 /usr/local/libexec/apache/mod_setenvif.so httpd 4460 www txt VREG 0,67 31420 449547 /usr/local/libexec/apache/mod_layout.so <省略> mod_layout.so が表示されているのでモジュールとして組み込まれている。
補足
上記の方法や/usr/local/apache/bin/httpd -l で確認しましたが、モジュールが見つからなかったため、どうやら組み込まれていないようでした。 もし組み込み方法をご存じでしたらご教授いただきたく思います。
- Lean
- ベストアンサー率72% (435/603)
>Trying to insert </body> >ADDING LAYOUT:</body> (3) (4)(1) >セグメンテーション違反です mod_layoutモジュールに問題がありそうな気がしますが。 3.2.1ではセグメンテーション違反になって、3.2だと正常に動作したというのを見かけましたが、試しに3.2にしてみるというのはどうでしょうか?
補足
3.2にて動作させてみました。 コンパイル・インストールはうまくいきました。 Apacheに組み込んでの起動もうまくいきました。 しかし、.htaccessに LayoutHeader /var/www/html/header.html LayoutFooter /var/www/html/footer.html と記述してディレクトリに配置すると [Fri Jan 19 22:16:03 2007] [alert] [client 192.168.1.5] /var/www/html/.htaccess: Invalid command 'LayoutHeader', perhaps mis-spelled or defined by a module not included in the server configuration のエラーが。 httpd.confに <IfModule mod_layout.c> LayoutMerge On #LayoutHeader /var/www/html/header.html LayoutFooter /var/www/html/footer.html </IfModule> を記述するとエラーは出ないもののフッターも挿入されませんでした。
- Lean
- ベストアンサー率72% (435/603)
>[Thu Jan 18 14:56:55 2007] [alert] [client 192.168.1.5] /var/www/html/.htaccess: Invalid command 'LayoutHeader', perhaps mis-spelled or defined by a module not included in the server configuration mod_layoutのソースを見る限りでは、LayoutHeaderは存在しているようなので、httpd.confの方のモジュールの設定の方に問題があってモジュールとして組み込まれていない可能性があると思います。
補足
ご回答ありがとうございます。 モジュールのロードはhttpd.confへ LoadModule layout_module libexec/mod_layout.so が自動的に追加されましたので、これで有っていると思うのですが… http://mm.apache.or.jp/pipermail/newbie/2001-March.txt 上のサイトを参考にhttpd.confに直接指定しようと <Virtualhost www.hogehoge.com> # LayoutFooter /footer.html LayoutHeader /header.html </virtualhost> を最終行に追加しましたが、今度はapacheを再起動させた際、 Trying to insert </body> ADDING LAYOUT:</body> (3) (4)(1) セグメンテーション違反です と表示されました。 どうやらフッター挿入を試みているようですが… 小さな情報でもかまいませんので、提供していただければと思います。
- Lean
- ベストアンサー率72% (435/603)
Apache 1.3.xにAddOutputFilterディレクティブはありません。 下記URLのページを見てもらえば分かりますが、Apache 2.0.26以降で使用可能です。 AddOutputFilter ディレクティブ http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addoutputfilter
補足
AddOutputFilterって2.0からだったんですか… しかし、それを外して再度表示を試みると [Thu Jan 18 14:56:55 2007] [alert] [client 192.168.1.5] /var/www/html/.htaccess: Invalid command 'LayoutHeader', perhaps mis-spelled or defined by a module not included in the server configuration とLayoutHeaderで似たエラーが発生しました。 mod_layout3.2.1のレイアウト挿入の指定が間違っているのでしょうか…?
お礼
長々とお付き合いさせてしまいまして申し訳ありませんでした。 他の方の回答を気長に待ってみることにします。 ありがとうございました。