首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MAMP上安装apache模块X-Sendfile

在MAMP上安装apache模块X-Sendfile
EN

Stack Overflow用户
提问于 2012-02-02 02:59:16
回答 2查看 4.8K关注 0票数 0

如何安装X-Sendfile apache模块,以便MAMP可以使用它?

我跟随these instructions安装了X-Sendfile,但它不能工作(它似乎只是为默认的apache安装安装了它)。我还尝试手动将/usr/libexec/apache2/mod_xsendfile.so复制到/Applications/MAMP/Library/modules/,但在重启Apache时出现以下错误:

Cannot load /Applications/MAMP/Library/modules/mod_xsendfile.so into server: cannot create object file image or add library

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-04 22:02:24

如果您的MAMP二进制文件是为与您的内核相同的架构构建的,那么naabster的答案是正确的。您可能遇到的问题是,MAMP不是使用相同的体系结构构建的--我在这里使用XAMPP 1.7.3运行Lion (10.7.3),我刚刚遇到了您遇到的相同问题。

以下是我如何找出系统上的错误,以及我如何修复它。如果您的问题与我的问题相同,那么您应该能够跟踪并验证您的问题。

首先,下面是'uname -a‘的输出,向您展示我正在运行的内容:

代码语言:javascript
复制
Darwin Tads-Mac-Pro.local 11.3.0 Darwin Kernel Version 11.3.0:
Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64

下面是我用来追踪和解决这个问题的步骤:

  1. 找出了我新构建的xsendfile模块缺少的其他(工作)模块的哪些属性。我选择mod_headers.so作为一个例子。查找该信息的命令是'file filename‘。我从终端cd运行这个命令到/Applications/XAMPP/xamppfiles/modules目录:

file mod_headers.so mod_headers.so:具有2个体系结构的Mach-O通用二进制mod_headers.so (用于体系结构i386):Mach-O包i386 mod_headers.so (用于体系结构ppc):Mach-O bundle ppc

正如您所看到的,XAMPP友好地提供了支持i386和ppc架构的通用二进制文件。但是,因为Lion内核正在运行x86_64,所以我使用apxs构建的所有内容都将是x86_64的。

  • 检查使用推荐的apxs构建命令('sudo apxs -cia mod_xsendfile.c')构建的模块所支持的mach-o包类型和体系结构。因为我们传递的是'-i‘,所以apx会将.so安装到默认的apache模块目录中...

文件/usr/libexec/apache2/mod_xsendfile.so /usr/libexec/apache2/mod_xsendfile.so: Mach-O 64位包x86_64

为了再次确认这就是问题所在,您还可以查看httpd (apache)二进制文件:

文件/应用程序/XAMPP/xamppfiles/bin/httpd /Applications/XAMPP/xamppfiles/bin/httpd:具有2个体系结构的Mach-O通用二进制文件/应用程序/XAMPP/xamppfiles/bin/httpd(用于体系结构i386):Mach-O可执行i386 /Applications/XAMPP/xamppfiles/bin/httpd (用于体系结构ppc):Mach-O可执行程序ppc

现在,这肯定不适用于没有x86_64镜像的apache实例。信任,但是验证,嗯!

  • 现在我确定我理解了这个问题,让我们用apxs命令行上强制的正确架构重新构建.so。为此,我只添加了两个新参数: Wl (链接器标志)和Wc (编译器标志)。-i表示'install‘(将.so移至模块目录),-a表示'activate’(在httpd.conf中添加或重新启用LoadModule行)

sudo apxs -cia -Wl,"-arch i386“-Wc,"-arch i386”sudo apxs-cia-Wl,“-arch i386”sudo apxs-cia-Wl,“Apache i386”-Wc,“-arch i386”sudo apxs .so支持与安装的Apache相匹配的体系结构(i386,而不是x86_64)

文件/Applications/XAMPP/xamppfiles/modules/mod_xsendfile.so /Applications/XAMPP/xamppfiles/modules/mod_xsendfile.so: Mach-O包i386

太棒了。现在,将这个火鸡复制到XAMPP安装目录中:

sudo cp /usr/libexec/apache2/mod_xsendfile.so /Applications/XAMPP/xamppfiles/modules/

并向/Applications/XAMPP/xamppfiles/etc/httpd.conf.添加LoadModule行

LoadModule xsendfile_module模块/mod_xsendfile.so

您应该能够使用UI或xamppfiles/bin目录中的apachectl脚本启动服务器。

希望这对你有帮助。

此外,我做了一个相当不错的尽职调查搜索,发现在Goog中搜索“XAMPP X-SendFile无法创建对象”。我在这里找到的是你的问题,有一次我去掉了'XAMPP',因为我搜索的是'XAMPP‘,而不是'MAMP’

我开始使用‘x’‘AMP堆栈,大概10年前用的是LAMPP,然后是WAMPP,但是ApacheFriends的人现在把他们的叫做XAMPP,因为他们支持的平台。我更喜欢使用他们的,因为我知道如果我必须在Windows服务器上安装,我可以只下载我现在使用的相同的软件包,但对于Windows,我可以期望找到所有相同的服务器安装(没有太多的)惊喜。

所以,(非常)彻底地说,另一种更容易发现这些类型问题的方法是通过Console.app。打开它,在org.apache.httpd上过滤,你应该会看到类似这样的东西:

代码语言:javascript
复制
httpd: Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load
/usr/libexec/apache2/mod_xsendfile.so into server:
dlopen(/usr/libexec/apache2/mod_xsendfile.so, 10): no suitable image found.
Did find:\n\t/usr/libexec/apache2/mod_xsendfile.so: mach-o, but wrong architecture

当您手动启动apache服务器时,也可以从命令行获得该命令:

代码语言:javascript
复制
sudo apachectl -E /tmp/foo.txt -k start; tail -f /tmp/foo.txt 
票数 4
EN

Stack Overflow用户

发布于 2012-03-08 17:11:39

这对我很有效:

  1. 根据this为默认的OsX Apache服务器安装mod_xsendfile。
  2. /usr/libexec/apache2/mod_xsendfile.so复制到Mamp httpd.conf文件并添加以下行:LoadModule xsendfile_module modules/mod_xsendfile.so
  3. Restart Mamp httpd.conf
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9101566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档