2012-02-01 3 views
0

Comment puis-je installer le module apache X-Sendfile pour que MAMP puisse l'utiliser?Installer le module apache X-Sendfile sur MAMP

J'ai suivi these instructions pour installer X-Sendfile, mais cela n'a pas fonctionné (il semble qu'il l'a simplement installé pour l'installation par défaut d'Apache). J'ai aussi essayé de copier manuellement /usr/libexec/apache2/mod_xsendfile.so-/Applications/MAMP/Library/modules/, mais qui a produit l'erreur suivante lors du redémarrage de Apache:

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

Répondre

4

naabster est correct si votre binaire MAMP est construit pour la même architecture que votre noyau. Le problème que vous avez pourrait être que MAMP n'est pas construit en utilisant la même architecture - j'ai Lion en cours d'exécution ici (10.7.3) avec XAMPP 1.7.3 et je viens de courir sur le même problème que vous aviez.

Voici comment j'ai déterminé ce qui n'allait pas sur mon système et comment je l'ai réparé. Si votre problème est le même que le mien, vous devriez pouvoir suivre et vérifier au fur et à mesure.

D'abord, voici la sortie de 'uname -a pour vous montrer que ce que je suis en cours d'exécution:

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 

Voici les étapes de mon travail pour traquer le problème et y remédier:

  1. Déterminez quels attributs les autres modules (de travail) avaient que mon module xsendfile fraîchement construit était manquant. J'ai choisi mod_headers.so comme exemple. La commande pour trouver cette information est 'fichier [nomfichier]'. Je suis en ce depuis un terminal cd'd dans le répertoire/Applications/XAMPP/xamppfiles/modules:

    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 
    

    Comme vous pouvez le voir, XAMPP fournit aimablement un binaire universel qui prend en charge les architectures i386 et ppc. Cependant, étant donné que le noyau Lion exécute x86_64, tout ce que je construis en utilisant les apx à moins que je ne le dise sinon sera x86_64.

  2. Vérifiez le type de bundle mach-o et les architectures supportées par le module construit avec la commande build apxs recommandée ('sudo apxs -cia mod_xsendfile.c'). Parce que nous transmettons -i les apxs installera le .donc dans la valeur par défaut apache modules dir .../usr/libexec/apache2 ...

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

    Juste pour revérifier que c'est la problème, vous pouvez également regarder le httpd (apache) binaire:

    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 
    

    Eh bien maintenant, que certainement ne fonctionnera pas avec une instance apache construit sans une image x86_64. Faites confiance, mais vérifiez, hein!Maintenant que je suis certain que je comprends le problème, reconstruisons le fichier .so avec l'architecture appropriée forcée sur la ligne de commande apxs. Pour ce faire, je ne fais qu'ajouter deux nouveaux paramètres, Wl (indicateurs de liens) et Wc (indicateurs de compilation). Les moyens -i « install » (déplacer .donc dans le répertoire des modules) et les de l'Activate »signifie -a (ajouter ou réactivez ligne LoadModule dans le httpd.conf)

    sudo apxs -cia -Wl,"-arch i386" -Wc,"-arch i386" mod_xsendfile.c 
    
  3. revérifier que notre nouveau .donc soutient une architecture qui correspond à l'Apache installé (i386, non x86_64)

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

    Impressionnant. Maintenant, copiez cette dinde dans le répertoire d'installation XAMPP:

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

    et ajoutez la ligne LoadModule au /Applications/XAMPP/xamppfiles/etc/httpd.conf.

    LoadModule xsendfile_module modules/mod_xsendfile.so 
    

    Vous devriez être en mesure de tirer le serveur en utilisant soit l'interface utilisateur ou le script apachectl dans le répertoire xamppfiles/bin.

Espérons que cela vous aide.

En outre, j'ai fait une recherche due-diligence assez décente et trouvé à peu près squat cherchant «XAMPP X-SendFile ne peut pas créer l'objet» dans le Goog. Ce que j'ai trouvé, c'est ta question ici, une fois j'ai éliminé le 'XAMPP' puisque je cherchais 'XAMPP', pas 'MAMP'

J'ai commencé avec la pile 'x'AMP quelque chose comme 10 ans en utilisant LAMPP , puis WAMPP mais les gars ApacheFriends appellent leur XAMPP maintenant pour toutes les plates-formes qu'ils prennent en charge. Je préfère utiliser le leur car je sais si je dois installer sur un serveur Windows je peux simplement télécharger le même paquet que j'utilise maintenant mais pour Windows et je peux m'attendre à trouver tous les mêmes serveurs installés sans (trop) de surprises. Donc, pour être (très) complet, l'autre moyen de découvrir plus facilement ces types de problèmes est via Console.app. Ouvrez ça, filtre org.apache.httpd et vous devriez voir quelque chose de semblable à ceci:

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 

Vous pouvez également obtenir ce à partir d'une ligne de commande lorsque vous démarrez le serveur apache manuellement:

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

Il s'avère que je courais aussi une version légèrement dépassée de MAMP, donc j'ai aussi dû mettre à jour cela (puisque la version d'Apache était différente). Cela a fonctionné très bien, cependant. Merci! – lakenen

+0

Heureux d'aider, heureux que vous êtes opérationnel :) –

+0

J'ai eu le même problème que @lakenen. Après avoir mis à jour le MAMP, mod_xsendfile se charge bien. Je n'ai même pas eu à le compiler en i386, juste en utilisant "apxs -cia mod_xsendfile.c" fonctionne très bien. Merci! – woran

0

Cela a fonctionné pour moi:

  1. Installer mod_xsendfile selon this pour la valeur par défaut OsX Apache serveur.
  2. copie /usr/libexec/apache2/mod_xsendfile.so-/Applications/MAMP/Library/modules/
  3. Modifier le fichier httpd.conf Mamp et ajoutez cette ligne: LoadModule xsendfile_module modules/mod_xsendfile.so
  4. Restart Mamp réponse de
+0

C'est exactement ce que j'ai fait avant, ce qui produit l'erreur ci-dessus. – lakenen

Questions connexes