2016-05-31 26 views
6

Ich versuche, eine ziemlich große PHP 5.3 Codebasis zu PHP 7 zu aktualisieren. Es ist auf CentOS 6.5 gehostet, also möchte ich es auf diesem Betriebssystem behalten. Ich mache es gerade auf einer jungfräulichen Vagrant-Box - ich habe PHP 7 erfolgreich installiert, und alle Module außer Memcache.Memcache-Erweiterung mit PHP 7 auf CentOS schlägt fehl

Als root, wenn ich pecl install memcache ausführen, es versucht, v2.2.7 zu installieren, aber ich bekomme eine lange Liste von Fehlern und Warnungen von machen. Am Ende ist:

make: *** [memcache.lo] Error 1 
ERROR: `make' failed 

Nach GoPHP7 sollte es funktionieren sollte Memcache arbeiten mit PHP 7 - es heißt "php7 Port auf Github". Es gibt in der Tat eine Memcache PHP 7 port on GitHub. Wenn ich mir die Seite Memcache page on Pecl anschaue, wird angezeigt, dass ich v3.0.8 installieren sollte, aber dies in der Betaversion (und seit 2013).

Also versuche ich pecl install memcache-3.0.8 zu laufen und es immer noch nicht, mit dem gleichen Fehler wie oben:

make: *** [memcache.lo] Error 1 
ERROR: `make' failed 

So ist es möglich, die Memcache Erweiterung der Arbeit mit PHP 7 auf CentOS 6.5 zu bekommen?

Antwort

18

Wenn Sie dies noch nicht gelöst haben, habe ich eine Lösung, die für mich funktioniert hat. Ich bin auf CentOS 7.x, aber es sollte immer noch für Sie arbeiten, und alle anderen wollen pecl-memcache mit PHP 7 (nicht pecl-memcached als das ist ein ganz anderes Paket) verwenden.

Wie Sie bereits festgestellt haben, müssen Sie dazu die Memcache PHP 7 port on GitHub verwenden.

Login Shell und führen Sie die folgenden Schritte aus:

1. wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip 
2. unzip NON_BLOCKING_IO_php7.zip 
3. cd pecl-memcache-NON_BLOCKING_IO_php7 
4. /opt/cpanel/ea-php70/root/usr/bin/phpize && ./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php70/root/usr/bin/php-config && make 
5. cp modules/memcache.so /opt/cpanel/ea-php70/root/usr/lib64/php/modules/ 
6. echo 'extension=memcache.so' >/opt/cpanel/ea-php70/root/etc/php.d/memcached.ini 
7. service httpd restart 

Einige Hinweise für die oben:

  • ersetzen jeden vollständigen Pfad, den ich mit dem entsprechenden vollständigen Pfad verwendet haben, auf Ihrem eigenen System . Während ich/opt/cpanel/ea-php70/root/habe, hast du vielleicht /opt/php-7.0.7/. Wenn Sie wie ich mehrere PHP-Versionen installiert haben, kann die Ausführung von phpize mit einer alten Version von PHP beginnen. Ich habe das nach vielen Versuchen entdeckt.
  • Um herauszufinden, wo Ihre PHP-Module Ordner ist, können Sie "/ opt/cpanel/ea-php70/root/usr/bin/php -i | grep extension_dir" run
  • Sie können nicht brauchen Schritt 6 auszuführen wo ich eine memcached.ini erstelle, wenn Sie sie schon woanders geladen haben.
  • Mit "/ opt/cpanel/ea-php70/root/usr/bin/php -i | grep memcache" können Sie überprüfen, ob es korrekt erstellt und installiert wurde. Wenn Sie verschiedene Memcache-Einträge sehen, wurde alles erfolgreich installiert.

Ich hoffe, dass hilft!

+1

you da man. Holy Ich kann nicht glauben, dass es so schwer war, diese Information zu finden. – Sebas

+1

Die zweite Zeile sollte 'entpacken NON_BLOCKING_IO_php7.zip' sein ;-) – Tim

+0

Du hast Recht, Tim! Ich habe sogar die Schritte ein paar Mal überprüft, bevor ich sie gepostet habe, aber ich denke, dass dieser von mir weggerutscht ist. Danke und behoben! – Phil