※ ChatGPTを利用し、要約された質問です(原文:DB接続を行うApacheモジュールをApacheに追加して、Apacheを再起動するとエラー)
Apacheモジュールを追加してApacheを再起動するとエラーが発生する理由
このQ&Aのポイント
作成したApacheモジュールをApacheに追加して再起動した際に、undefined symbolエラーが発生します。
モジュール内で使用されているmysql_queryという関数に関連するエラーです。
make時にはエラーが出ず、ソースコードも正しくインクルードされているため、原因は他の要素にある可能性があります。
DB接続を行うApacheモジュールをApacheに追加して、Apacheを再起動するとエラー
皆さんこんにちは。
Apacheモジュールを作りを行っていました。
モジュール内で、
MySQLにコネクションをはり、
queryリクエストの往来を行うだけの単純なものです。
モジュールの作成から次の順序で作業を進めました。
-----------------------------
(1)モジュールの作成
(2)モジュール(1)のmakeを行う -> make成功
(3)モジュールのsoファイルを配置。
/usr/local/apache2/modules/ に
make時に作成された
モジュールの「soファイル」を配置。
(4)httpd.confの編集
httpd.confに
作成したモジュールのディレクティブを挿入。
LoadModule db_connect_module modules/db_connect.so
<Location /db_connect>
SetHandler db_connect
</Location>
(5)Apacheのリスタート
-----------------------------
(5)でapacheの再起動を行うと、
次のエラーが表示されました。
httpd: Syntax error on line 96 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_db_connect.so into server: /usr/local/apache2/modules/mod_db_connect.so: undefined symbol: mysql_query
ここで不思議だったのは、
確かに、
作成したMySQLに接続するためのApacheモジュール内で、
「mysql_query」を利用していますが、
そのモジュールのmake時には
エラーが表示されていなかったし、
make時にエラーが出なかったとおり、
モジュール内のソースでも、
記述した「mysql.h」も正常にインクルードされていると思います。
どうして、
apacheのhttpd.confは
「mysql_query」に関する
上記のエラーを出してくるのでしょうか?
どなたか考えられる原因を
アドバイスいただけるとありがたい次第です。
以上どうぞ宜しくお願い致します。
お礼
ありがとうございました。 明示的に静的リンクにしてみて、 改善がありました! ありがとうございました。