Apache2 在雪豹上编译mod_auth_mysql

Apache2 在雪豹上编译mod_auth_mysql,apache2,Apache2,如何在雪豹上构建mod_auth_mysql 我没有把我的发现隐藏在博客评论中,而是决定将它们记录在这里的答案中 我有以下错误: May 24 10:43:44 host org.apache.httpd[6764]: httpd: Syntax error on line 120 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_auth_mysql.so into server: dlopen(/

如何在雪豹上构建mod_auth_mysql

我没有把我的发现隐藏在博客评论中,而是决定将它们记录在这里的答案中

我有以下错误:

May 24 10:43:44 host org.apache.httpd[6764]: httpd: Syntax error on line 120 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_auth_mysql.so into server: dlopen(/usr/libexec/apache2/mod_auth_mysql.so, 10): Symbol not found: _make_scrambled_password\n  Referenced from: /usr/libexec/apache2/mod_auth_mysql.so\n  Expected in: flat namespace\n in /usr/libexec/apache2/mod_auth_mysql.so
May 24 11:14:06 host org.apache.httpd[10880]: httpd: Syntax error on line 120 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_auth_mysql.so into server: dlopen(/usr/libexec/apache2/mod_auth_mysql.so, 10): Library not loaded: libmysqlclient.18.dylib\n  Referenced from: /usr/libexec/apache2/mod_auth_mysql.so\n  Reason: image not found
  • 首先按照上的说明操作,尤其是使用他的贴片
  • 检查mysqls.dylib文件中存储的路径信息
    • otool-DX/usr/local/mysql/lib/libmysqlclient.18.dylib
    • 这应该返回一个完整路径,您不必首先通过调用
    • sudo安装工具-id/usr/local/mysql/lib/libmysqlclient.18.dylib/usr/local/mysql/lib/libmysqlclient.18.dylib
  • -lmysqlclient
    添加到apxs命令行:
编译:

sudo apxs -c -i -a -D lmysqlclient -lmysqlclient -lm -lz \ 
 -I/usr/local/mysql/include/ \
 -L/usr/local/mysql/lib/ -Wc,"-arch x86_64" \
 -Wl,"-arch x86_64" mod_auth_mysql.c
  • 确保列出了mysql库:otool-L/usr/libexec/apache2/mod_auth_mysql.so
  • 使用apachectl configtest检查您的设置

干杯

我不得不稍微调整一下,这样它就可以在Mac mini-core duo(不支持64位代码)上运行了,基本上,您只需省略对64位体系结构的引用:

$ sudo apxs -c -i -a -D lmysqlclient -lmysqlclient -lm -lz -I/usr/local/mysql/include/ \
-L/usr/local/mysql/lib/ mod_auth_mysql.c
如果找不到XCode工具链的cc时出错:

env:/Applications/Xcode.app/Contents/Developer/toolschains/OSX10.8.xctoolschain/usr/bin/cc:没有这样的文件或目录 apxs:错误:命令失败,rc=65536

然后,您要么必须安装XCode,要么将其符号链接到默认的工具链:

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain
另外:Nils Preusker的博客被关闭了。你可能会在谷歌的缓存中找到答案。或者,我已将相关部分粘贴在此处:

在OS X 10.5.6上编译和安装mod_auth_mysql

2009年4月17日由nils发布 apche模块mod_auth_mysql使使用mysql数据库而不是passwd文件成为可能。有Mac OS X 10.4模块的安装程序,但没有Mac OS X 10.5或更高版本的安装包或端口。我对源代码进行了一点修改,最终成功地编译了它,apache启动时没有错误消息。我已经创建了一个diff文件来修补mod_auth_mysql.c。以下步骤解释了如何应用补丁、编译模块和测试apache配置

我们将首先在您的用户目录中创建一个src文件夹,下载mod_auth_mysql并展开它:

$ mkdir ~/src
$ cd ~/src
$ curl -O http://puzzle.dl.sourceforge.net/sourceforge/\
modauthmysql/mod_auth_mysql-3.0.0.tar.gz
$ tar zxvf mod_auth_mysql-3.0.0.tar.gz
现在,模块的源代码位于mod_auth_mysql-3.0.0文件夹中。在我们编译它之前,必须应用补丁。这是diff文件,保存到

~/src/mod_auth_mysql-3.0.0/mod_auth_mysql.diff 要应用修补程序,我们将更改到sources目录并执行unix修补程序,该程序将原始文件作为修补程序应用diff文件:

$ cd mod_auth_mysql-3.0.0
$ patch mod_auth_mysql.c mod_auth_mysql.diff
继续使用32位或64位代码

如果diff文件丢失,这里就是

209c209
<   #define STRCAT ap_pstrcat
---
>   #define STRCAT apr_pstrcat
592c592
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlhost),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlhost),
596c596
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlport),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlport),
600c600
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlsocket),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlsocket),
604c604
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqluser),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqluser),
608c608
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlpasswd),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlpasswd),
612c612
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlDB),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlDB),
616c616
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlpwtable),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlpwtable),
620c620
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlgrptable),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlgrptable),
624c624
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlNameField),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlNameField),
628c628
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupField),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupField),
632c632
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupUserNameField),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupUserNameField),
636c636
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlPasswordField),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlPasswordField),
640c640
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlEncryptionField),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlEncryptionField),
644c644
<   (void*) APR_XtOffsetOf(mysql_auth_config_rec, mysqlSaltField),
---
>   (void*) APR_OFFSETOF(mysql_auth_config_rec, mysqlSaltField),
652c652
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlAuthoritative),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlAuthoritative),
656c656
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlNoPasswd),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlNoPasswd),
660c660
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlEnable),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlEnable),
664c664
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlUserCondition),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlUserCondition),
668c668
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupCondition),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupCondition),
672c672
<   (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlCharacterSet),
---
>   (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlCharacterSet),
209c209
<#定义STRCAT ap\pstrcat
---
>#定义STRCAT apr U pstrcat
592c592
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlhost),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlhost),
596c596
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlport),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlport),
600c600
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlsocket),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlsocket),
604c604
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqluser),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqluser),
608c608
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlpasswd),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlpasswd),
612c612
<(void*)APR\uxtOffsetof(mysql\uAuth\uConfig\uRec,mysqlDB),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlDB),
616c616
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlpwtable),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlpwtable),
620c620
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlgrptable),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlgrptable),
624c624
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlNameField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlNameField),
628c628
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlGroupField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlGroupField),
632c632
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlGroupUserNameField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlGroupUserNameField),
636c636
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlPasswordField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlPasswordField),
640c640
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlEncryptionField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlEncryptionField),
644c644
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlSaltField),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlSaltField),
652c652
<(void*)APR\uxtOffsetof(mysql\uAuth\uConfig\uRec,mysql权威),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysql权威),
656c656
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlNoPasswd),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlNoPasswd),
660c660
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlEnable),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlEnable),
664c664
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlUserCondition),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlUserCondition),
668c668
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlGroupCondition),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlGroupCondition),
672c672
<(void*)APR\XtOffsetOf(mysql\u auth\u config\u rec,mysqlCharacterSet),
---
>(void*)APR_OFFSETOF(mysql_auth_config_rec,mysqlCharacterSet),