如何安装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
发布于 2012-04-04 22:02:24
如果您的MAMP二进制文件是为与您的内核相同的架构构建的,那么naabster的答案是正确的。您可能遇到的问题是,MAMP不是使用相同的体系结构构建的--我在这里使用XAMPP 1.7.3运行Lion (10.7.3),我刚刚遇到了您遇到的相同问题。
以下是我如何找出系统上的错误,以及我如何修复它。如果您的问题与我的问题相同,那么您应该能够跟踪并验证您的问题。
首先,下面是'uname -a‘的输出,向您展示我正在运行的内容:
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下面是我用来追踪和解决这个问题的步骤:
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的。
文件/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实例。信任,但是验证,嗯!
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上过滤,你应该会看到类似这样的东西:
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服务器时,也可以从命令行获得该命令:
sudo apachectl -E /tmp/foo.txt -k start; tail -f /tmp/foo.txt 发布于 2012-03-08 17:11:39
这对我很有效:
/usr/libexec/apache2/mod_xsendfile.so复制到Mamp httpd.conf文件并添加以下行:LoadModule xsendfile_module modules/mod_xsendfile.sohttps://stackoverflow.com/questions/9101566
复制相似问题