2012-02-01 1 views
0

MAMP가 사용할 수 있도록 X-Sendfile 아파치 모듈을 어떻게 설치할 수 있습니까?아파치 모듈 X-Sendfile을 MAMP에 설치

나는 X-Sendfile을 설치하기 위해 these instructions을 따라 갔지만 작동하지 않았다. (그냥 기본 아파치를 설치 한 것처럼 보인다.) 나는 또한에 수동으로 /Applications/MAMP/Library/modules//usr/libexec/apache2/mod_xsendfile.so을 복사했지만, 아파치를 다시 시작 때 다음과 같은 오류가 발생 : 이것은 나를 위해 일한

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

답변

4

naabster의 대답은 정확 LoadModule xsendfile_module modules/mod_xsendfile.so

  • 다시 시작 MAMP 당신의 핵심. 당신이 가지고있는 문제는 MAMP가 같은 아키텍처를 사용해서 만들어지지 않았을 수도 있다는 것입니다 - 저는 XAMPP 1.7.3을 사용하여 여기 라이온 (10.7.3)을 실행 시켰고 당신이 가지고있는 것과 똑같은 문제에 직면했습니다.

    다음은 시스템에서 무엇이 잘못 되었는가와 그 문제를 해결 한 방법입니다. 문제가 내 문제와 동일하면 따라 가서 확인할 수 있어야합니다.

    을 : 여기
    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 
    

    이 문제를 추적하여 해결하는 내가 찍은 단계는 다음과 같습니다

    먼저, 여기에 내가 실행 해요 그 무엇을 보여주기 위해 '끝나면 uname -a'의 출력을의

    1. 새로 작성된 xsendfile 모듈에 누락 된 다른 (작동중인) 모듈의 특성을 파악합니다. 나는 mod_headers.so를 예로 들어 봤다. 해당 정보를 찾는 명령은 '[파일 이름]'파일입니다. 나는/응용 프로그램/XAMPP가/xamppfiles/modules 디렉토리에 cd'd 터미널에서 이것을 실행 해요 :

      file mod_headers.so 
      mod_headers.so: Mach-O universal binary with 2 architectures 
      mod_headers.so (for architecture i386): Mach-O bundle i386 
      mod_headers.so (for architecture ppc): Mach-O bundle ppc 
      

      당신이 볼 수 있듯이, XAMPP는 친절의 i386과 PPC 아키텍처를 지원하는 유니버설 바이너리를 제공합니다. 그러나 라이온 커널이 x86_64를 실행하고 있기 때문에 내가 말하지 않는 한 을 사용하여 빌드 한 모든 것은이 x86_64가됩니다.

    2. 권장되는 apxs 빌드 명령 ('sudo apxs -cia mod_xsendfile.c')으로 빌드 된 모듈에서 지원되는 mach-o 번들 유형 및 아키텍처를 확인하십시오. 우리는 '-i'통과하고 있기 때문에 apxs를 아파치 모듈 디렉토리 ...는/usr/libexec 디렉토리/아파치 ...

      단지에
      file /usr/libexec/apache2/mod_xsendfile.so 
      /usr/libexec/apache2/mod_xsendfile.so: Mach-O 64-bit bundle x86_64 
      

      한 번 확인이는 것을 기본으로 .so를 설치합니다 당신은 또한 아파치 (아파치)를 볼 수 있습니다 문제를 진 : 지금

      file /Applications/XAMPP/xamppfiles/bin/httpd 
      /Applications/XAMPP/xamppfiles/bin/httpd: Mach-O universal binary with 2 architectures 
      /Applications/XAMPP/xamppfiles/bin/httpd (for architecture i386): Mach-O executable i386 
      /Applications/XAMPP/xamppfiles/bin/httpd (for architecture ppc): Mach-O executable ppc 
      

      음, 확실히 x86_64의 이미지없이 내장 된 아파치 인스턴스와 작동하지 않습니다. 믿어 라.

    3. 이제는 문제가 무엇인지 알았으므로 apxs 명령 줄에서 적절한 아키텍처로 .so를 다시 빌드 해 보겠습니다. 이를 위해 Wl (링커 플래그)과 Wc (컴파일러 플래그)라는 두 개의 새로운 매개 변수를 추가하기 만하면됩니다. -i 수단 (모듈 디렉토리에 .so를 이동)와 -a 수단 '활성화' '설치'(추가하거나 httpd.conf 파일에서의 LoadModule 라인 다시 활성화)

      sudo apxs -cia -Wl,"-arch i386" -Wc,"-arch i386" mod_xsendfile.c 
      
    4. 다시 검사를하는 새로운 .so는 설치된 Apache (i386, x86_64가 아님)와 일치하는 아키텍처를 지원합니다.

      file /Applications/XAMPP/xamppfiles/modules/mod_xsendfile.so 
      /Applications/XAMPP/xamppfiles/modules/mod_xsendfile.so: Mach-O bundle i386 
      

      굉장합니다. 이제 다음 디렉토리 설치 XAMPP에이 칠면조를 복사

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

      을 그리고 /Applications/XAMPP/xamppfiles/etc/httpd.conf에의 LoadModule 줄을 추가합니다.

      LoadModule xsendfile_module modules/mod_xsendfile.so 
      

      당신은 UI 또는 xamppfiles/bin 디렉토리에있는 apachectl 스크립트의를 사용하여 서버를 해고 할 수 있어야한다.

    희망이 도움이됩니다.

    또한 꽤 괜찮은 근면 검색을했고 Goog에서 'XAMPP X-SendFile은 개체를 만들 수 없습니다.'를 찾고있었습니다. 내가 뭘 찾았는지 궁금하다. 일단 'XAMPP'을 제거 했더니 'MAMP'가 아니라 'XAMPP'을 찾았다.

    나는 'x'AMP'스택을 사용하여 10 년 전 LAMPP , WAMPP하지만 아파치 친구들은 이제 그들이 지원하는 모든 플랫폼에 대해 XAMPP이라고 부릅니다. 나는 내가 지금 사용하는 패키지와 동일한 패키지를 다운로드 할 수있는 윈도우 서버를 설치해야만한다는 것을 알기 때문에 그들의 것을 사용하는 것을 선호한다.하지만 윈도우즈 용으로 (너무 많은) 놀라움없이 설치된 모든 서버를 찾을 수있을 것이다.


    따라서 이러한 유형의 문제를보다 쉽게 ​​발견 할 수있는 다른 방법은 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 
    

    수동으로 아파치 서버를 시작할 때 당신은 또한 명령 줄에서 그것을 얻을 수 있습니다 :

    sudo apachectl -E /tmp/foo.txt -k start; tail -f /tmp/foo.txt 
    
  • +1

    나는 약간 오래된 버전의 MAMP도 실행 중이므로 (아파치 버전이 다르기 때문에) 업그레이드해야했다. 그래도 큰 효과가있었습니다. 감사! – lakenen

    +0

    기꺼이 도와 드리겠습니다. –

    +0

    @lakenen과 같은 문제가있었습니다. MAMP를 업그레이드하면 mod_xsendfile이로드됩니다. 심지어 "apxs -cia mod_xsendfile.c"를 사용하여 i386으로 컴파일하지 않아도됩니다. 감사! – woran

    0

    :

    1. 기본 OSX 아파치 this에 따라 mod_xsendfile 설치를 섬기는 사람.
    2. /usr/libexec/apache2/mod_xsendfile.so 편집
    3. /Applications/MAMP/Library/modules/에 MAMP의 httpd.conf 파일을 복사하고이 줄을 추가 : 당신의 MAMP 바이너리와 같은 아키텍처 구축되어있는 경우
    +0

    에게 바로 위의 오류가 발생하기 전에 내가 한 일입니다. – lakenen