2012-12-29 2 views
5

Ich habe Probleme mit der Pthreads PHP extension. Ich habe PHP mit ZTS kompiliert kompiliert (--enable-maintainer-zts) und die Pthreads über pecl installiert und auch versucht, die Erweiterung manuell zu kompilieren.Wie Pthreads PHP-Erweiterung in Ubuntu zu verwenden

Es scheint, dass ich nicht wirklich weiß, wie man es benutzt. Ich nahm an, dass ich in der Lage wäre, die PHP-Klasse wie jede andere integrierte Klasse zu verwenden, aber ohne Erfolg, da PHP sie nicht erkennt. POSIX-Funktionen scheinen zu funktionieren.

Ich benutze Ubuntu 12.10 Server 64-Bit mit mod_php 5.4.6.

+0

Ich studierte Apache Fehlerprotokoll und es scheint, dass pthreads.so kann nicht geladen werden, weil es ein unbekanntes Symbol: sapi_globals_id ... Ich habe auch versucht, PHP mit Pthreads als statische Erweiterung zu kompilieren und es macht keinen Unterschied. –

+0

Die Dokumentation sagt eindeutig, dass es für 5.3 ist. Können wir annehmen, dass Sie mit "5.6.4" "5.4.6" gemeint haben? Wenn ja, versuchen Sie es mit 5.3 von 5.4 und schauen Sie, ob es dann funktioniert. Wenn dies der Fall ist, sollten Sie ein Problem mit dem Betreuer über die 5.4-Unterstützung einreichen. – Charles

+0

Ja, das war ein Tippfehler, ich benutze PHP 5.4.6. Momentan läuft pthreads. –

Antwort

3

Wenn Sie nicht auf die Erweiterungsklassen zugreifen können, wird sie nicht geladen.

Ich glaube, Sie haben einen Fehlerbericht geöffnet, auf den ich geantwortet habe, dass Ihre Konfigurationszeile fehlerhaft ist.

Die Konfigurationszeile Sie verwenden möchten, ist:

./configure --enable-pthreads --enable-maintainer-zts 

Der obige Befehl pThreads als DSO bauen.

./configure --enable-pthreads=static --enable-maintainer-zts 

Der obige Befehl wird Pthreads statisch in PHP erstellen.

Beide werden von 5.3, 5.4 und sogar 5.5 gleichermaßen unterstützt.

Außerdem, wenn Sie Ihr System-Installation überschrieben wird, dann sollten Sie eine bestimmte --prefix verwenden, zum Beispiel, wenn Sie PHP ausführbar /usr/bin ist (was man mit „which php“ feststellen kann), dann --prefix=/usr Ihre Systeminstallation überschreiben .

Reinigen Sie Ihre alten Installationen (machen Sie die Deinstallation, wenn die Quellen noch verfügbar sind). Starten Sie erneut, stellen Sie sicher, dass Sie entweder die Systeminstallation überschreiben oder diese vollständig isolieren.

Bitte aktualisieren Sie den Fehlerbericht, wenn Sie es ausgearbeitet haben.

+0

Nun, ich habe das ganze Ubuntu neu installiert und baue PHP statisch mit dem von Ihnen vorgeschlagenen Befehl (--enable-pthreads = statisch). Dieses Mal gab es überhaupt keine Probleme, so dass es in der PHP-Konfiguration Pannen gab. Danke, dass du mir geholfen hast. –

+0

Muss ZTS für alle installierten PHP-Versionen aktiviert sein (z. B. CGI, CLI und SAPI/Apache)? Oder wenn ich pthreads nur für CLI verwenden möchte, kann ich ZTS für die anderen deaktiviert lassen? – robguinness

+0

Überall, wo pthreads geladen ist, ist ZTS erforderlich, Sie können eine isolierte Instanz von PHP mit Unterstützung für Pthreads erstellen, wenn Sie dies wünschen ... –