2010-05-14 3 views
6

Ich erhalte beide Module als installiert aufgelistet/konfiguriert, wenn ich benutze:PHP Erweiterung (memcache | memcached) wird nicht in phpinfo() angezeigt, zeigt aber in php -m und php -i?

php -m 

oder wenn ich benutze:

php -i 

aber wenn ich benutze:

$m = new Memcache; 
// or 
$m = new Memcache(); 
// or 
$m = new Memcached(); 
//or 
$m = new Memcached; 

ich die Folgefehler:

Fatal error: Class 'Memcached' not found 

Ich laufe auf einem Mac - OS X (10.5.7) mit Standardinstallation von Apache & php. Darüber hinaus habe ich Memcach ausgeführt als Daemon auf 127.0.0.1:11211 und libmemcache wie von der php-memcached-Bibliothek erforderlich. Ich habe Apache tonnenweise neu gestartet und sogar einen Neustart der Maschine durchgeführt.

Weiß jemand, warum die Module/Erweiterungen in der Befehlszeile aber nicht in meinem phpinfo() angezeigt werden? Ich bin buchstäblich ratlos, nach 3 Stunden Googeln bin ich gerade dabei aufzugeben.

Auch, bitte beachten Sie, meine phpinfo() gibt meine ini-Dateien wie folgt und sie sind beide genau die gleiche Datei:

Configuration File (php.ini) Path: /etc 
Loaded Configuration File: /private/etc/php.ini 

UPDATE:

Apache versagt die Erweiterung laden .

[Fri May 14 04:22:26 2010] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so' - (null) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so' - (null) in Unknown on line 0

Weiß jemand, warum oder wie das passieren würde? Beide oben genannten Dateien sind DEFINITIV da. Sollte ich diese Frage auf Serverfehler verschieben?

Antwort

3

, da beide Versionen unterschiedliche php.ini
Ort der php.ini in Position verwenden bemerkt in der phpinfo() outout

+0

Das ist mein phpinfo Ausgabe: Konfigurationsdatei (php.ini) Pfad: \t/etc Loaded Configuration File: \t /private/etc/php.ini beide sind gleich. – Auston

4

Ihr Webserver wahrscheinlich Mod_php verwendet, die ein separates Stück Code aus dem Standalone ist (CLI) Dolmetscher. Wenn sie beide die gleiche ini-Datei verwenden und die Memcache-Erweiterung in der ini-Datei konfiguriert ist, dann klingt es wie aus irgendeinem Grund, dass die mod_php die Erweiterung nicht laden kann - überprüfen Sie Ihren Webserver error_log auf Startfehler.

Es kann sein, dass die mod_php ohne Memcache-Unterstützung kompiliert wurde (die meisten Erweiterungen müssen eine Stub-Datei in den PHP-Code verknüpft haben, obwohl der Großteil des Codes bis zur Laufzeit nicht verknüpft ist). Oder es kann ein Berechtigungsproblem für die freigegebene Objektdatei sein. Oder Ihr Webserver kann chroot ausführen und kann die Erweiterung nicht finden (was auch bedeuten würde, dass die ini-Dateien zwar den gleichen Pfad haben, dies jedoch relativ zu verschiedenen Roots ist).

HTH

C.

+0

(oder haben Sie Ihren Webserver seit der Änderung der Konfiguration nicht neu gestartet?) – symcbean

+0

Es ist nicht möglich, die Erweiterung zu laden! Vielen Dank! – Auston

2

ich, dass die Frage um Berechtigungen dreht vermuten würde. Wenn Sie PHP aus der Befehlszeile ausführen, wird es ausgeführt, wenn der Benutzer es aufruft. Wenn es als Apache-Modul ausgeführt wird, wird es als "Niemand" ausgeführt.

Ich würde annehmen, dass die memcached.so-Datei oder das Verzeichnis, in dem es sich befindet, keine richtigen Berechtigungen hat.

1

Ich stolperte über diesen Beitrag und hatte genau das gleiche Problem mit einer Erweiterung in meinem php -i, aber nicht in phpinfo(). Meines war ein Erlaubnisproblem wegen selinux auf einem CentOS Maschine. Ich musste Besitzer und Berechtigungen ändern und jetzt funktioniert es wie erwartet.

-2

Stellen Sie den PHP-Pfad in den unten angegebenen Umgebungsvariablen ein. Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz" Eigenschaften Registerkarte "Erweitert"> Umgebungsvariablen Scrollen Sie unter Systemvariablen nach unten, um "Pfad" zu finden, wählen Sie und klicken Sie auf Bearbeiten. Fügen Sie den Pfad zu Ihrer PHP-Installation am Ende hinzu (stellen Sie sicher, dass Sie dem Semikolon ";" vorangestellt haben). Beispiel: "; C: \ php7" Klicken Sie auf OK.

+0

Dies scheint die ursprüngliche Frage nicht zu beantworten. – chrisis

Verwandte Themen