2008-12-29 14 views
7

Ich muss die mcrypt Funktionen auf meiner Website aktivieren, außer ich bin auf einem freigegebenen Host (unter Linux) und haben offensichtlich keinen Zugriff auf die Datei php.ini. Es scheint Möglichkeiten zu geben, PEAR-Module zu installieren, aber eine Suche ergab, dass mcrypt nicht verfügbar war. Gibt es eine Möglichkeit, dies zu tun, ohne mich um technische Hilfe zu bitten, um mir zu helfen?Installieren von PHP-Erweiterungen auf Shared-Hosting


-Update: Auf der Suche um ein bisschen mehr, es sieht aus wie ich in der Lage sein könnte, die dl() Funktion zu verwenden, um dynamisch eine Bibliothek zur Laufzeit zu laden. Da ich die mcrypt-Funktionen nur an einer Stelle verwende, könnte ich wahrscheinlich damit durchkommen, da der Leistungshit (ich vermute, es gibt einen Treffer) minimal sein sollte. Das einzige Problem ist jetzt, wie man die Datei libmcrypt.so bekommt?


Ein weiteres Update: Ich habe die libmcrypt.tar.bz2 Datei von Source heruntergeladen haben, und führen Sie ./configure, make, und dann kopiert die libmcrypt.so.4.4.8 Datei in meinem Home-Verzeichnis (wie libmcrypt.so), aber jetzt kann ich nicht Finden Sie, wo Sie es setzen, so dass die dl() Funktion es finden wird.

Antwort

3

Die MCrypt Source Seite sollte es http://mcrypt.sourceforge.net/
es nur zu kompilieren:

wget http://superb-east.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz 
tar -xzvf libmcrypt-2.5.8.tar.gz 
cd libmcrypt-2.5.8 
./configure 
make 
sudo make install 

EDIT: Können Sie es mit einem direkten Pfad verweisen?
Was hast du probiert?

Edit2: Es scheint, dass Sie nur Module aus dem Verzeichnis extensions in der php.ini laden können und Sie können extensions_dir nicht mit ini_set überschreiben, so dass Sie entweder Ihren Host davon überzeugen müssen, es zu installieren oder wenn Sie es zulassen Ihre eigene php.ini (viele tun das normalerweise in [Benutzername] /php.ini), dann könnten Sie das extensions_dir dort eingeben und das Modulal damit laden.

+3

ah gut, dass sudo Teil zur Arbeit geht nicht, da ich auf einem gemeinsamen Host bin. – nickf

+0

Nun, du müsstest es erst bauen, ich baue jetzt einen und poste einen Link. – UnkwnTech

+0

danke für das Angebot (!), Aber ich konnte es bauen (siehe meine letzte Änderung) – nickf

2

Wirklich der beste Weg ist, Ihrem ISP zu sagen, dass er mcrypt-Unterstützung einschließt. Selbst wenn Sie Ihre eigene PHP-Erweiterung bündeln und mit dl() laden, gibt es keine Garantie, dass sie nach einem PHP-Upgrade funktioniert, da PHP manchmal sehr Versionsnummer ist.

0

dl() wird Ihnen auch nicht helfen, da es nur Bibliotheken aus bestimmten Pfaden lädt, und diese Pfade sind normalerweise nur für Systemadministratoren aus Sicherheitsgründen beschreibbar.

Ich bezweifle sehr, dass es eine Möglichkeit gibt, binäre Bibliotheken ohne die Zustimmung des Hoster zu verwenden.

0

PHP in Versionen vor 5.2.5 erlaubte es, einen Pfad in der dl() - Funktion zu verwenden, damit Sie Bibliotheken in einer gemeinsamen Umgebung problemlos laden können.

Dies wurde aus "Sicherheitsgründen" mit 5.2.5 geändert und soweit mir bekannt ist, besteht Ihre einzige Option darin, Ihren Systemadministrator dazu zu bringen, das Modul zum extensions_dir hinzuzufügen.

This issue is described at bugs.PHP.net