Titelbild über PONTIER
PHP 7 wurde letzten Dezember veröffentlicht. Wenn Sie Ihren Code lokal getestet haben, um ihn auszuführen, ist es Zeit für ein Upgrade Ihres Produktionsservers. Im Allgemeinen habe ich festgestellt, dass die meisten meiner Websites gut darauf laufen.
Ich vermute jedoch, dass noch nicht viele Websites aktualisiert wurden. Es ist oft sicherer und einfacher, auf älteren Releases zu bleiben. Eine Umfrage unter WordPress-Sites ergab, dass nur wenige:
"Ab November 2016 verwenden 52,9% der WordPress-Websites eine PHP-Version ohne PHP 5.5. Nur 3,4% der WordPress-Websites verwenden PHP 7, die aktuelle Hauptversion von PHP." über PHP Compatibility Checker.
PHP 7 ist jedoch seit fast einem Jahr verfügbar.
In der heutigen Episode werde ich Sie durch meinen empfohlenen Ansatz für das Upgrade auf PHP 7 unter Ubuntu 14.x und das Beheben von Problemen mit PHPMyAdmin führen, die bei vielen frühen Upgradern auftraten.
Wenn Sie derzeit WordPress verwenden, installieren Sie das Plugin PHP Compatibility Checker, um sicherzustellen, dass Sie keine unerwarteten Probleme mit Ihrem Plugin-Array haben.
Ich freue mich immer über Ihre Ideen und Ihr Feedback. Wenn Sie einen Fragen- oder Themenvorschlag haben, schreiben Sie bitte Ihre Kommentare in die nachstehenden Kommentare.
Sie können mich auch direkt auf Twitter @reifman erreichen. Dies gilt insbesondere für gängige Upgrade-Skripts wie dieses, bei denen die eigene Erfahrung und Eingabe der Benutzer einzigartig und wertvoll sein wird.
Ich habe versucht, einige Standard-Handbücher zum Upgrade von PHP 7 zu verwenden, und stieß auf eine Reihe verschiedener Probleme. Die Skripts, die ich unten mit Ihnen teile, wurden wiederholt getestet und ich glaube, dass das, was ich präsentiere, für Sie gut funktionieren wird.
Auch hier habe ich Digital Ocean sehr geschätzt, was es mir leicht macht, meinen Server zu sichern und wiederholt Testinstanzen zu erstellen, um die Upgrade-Schritte von Grund auf durchzuführen.
Lass uns anfangen.
An dieser Stelle sollten Sie sich Ihre Anpassungen in PHP .ini notieren und möglicherweise Ihre php.ini -Datei sichern, da Sie diese später nach PHP 7 migrieren müssen.
Dies sollte Ihnen helfen, Ihre INI-Datei zu finden:
$ php --ini
Das zeigte mir:
$ php --ini PHP Warnung: PHP-Startup: Die dynamische Bibliothek '/usr/lib/php5/20121212/newrelic.so' kann nicht geladen werden. - /usr/lib/php5/20121212/newrelic.so: kann die gemeinsam genutzte Objektdatei nicht öffnen: Keine solche Datei oder Verzeichnis in Unknown in Zeile 0 Konfigurationsdatei (php.ini) Pfad: / etc / php5 / cli Geladene Konfigurationsdatei: /etc/php5/cli/php.ini Nach weiteren .ini-Dateien suchen in: / etc / php5 / cli / conf.d…
Für Apache war meins dabei / etc / php5 / apache2
.
Zuerst löschen wir alle unsere älteren PHP-Pakete. Ich fand es am besten, dies gründlich zu machen, nicht nur PHP5, sondern auch 5.5 und 5.6, mit denen ich auf meinem Server experimentiert hatte.
$ sudo apt-get -y bereinigen php php-common php-mcrypt php-mbstring $ sudo apt-get -y bereinigen php5 php5-common php5-cli libapache2-mod-php5 php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite $ sudo apt-get -y bereinigen php5.5 php5.5-common php5.5-mcrypt php5.5-mbstring $ sudo apt-get y purge php5.6 php5.6-common $ sudo apt-get autoremove
Als ich nicht all diese Variationen von PHP bereinigt habe, bin ich später bei der Konfiguration von PHP 7 auf Probleme gestoßen. Wenn Sie einen einfachen Ansatz haben, teilen Sie ihn bitte in den Kommentaren.
$ sudo add-apt-repository ppa: ondrej / php Mitinstallierbare PHP-Versionen: PHP 5.5, 5.6, PHP 7.0 und Batterien. Weitere Informationen zu den Paketen finden Sie unter https://deb.sury.org. Für PHP 5.4 unter Ubuntu 12.04 verwenden Sie: ppa: ondrej / php5-oldstable FEHLER UND FEATURES: Diese PPA verfügt jetzt über einen Problem-Tracker: https: //deb.sury .org / # Fehlerbericht BITTE LESEN: Wenn Sie meine Arbeit mögen und mich ein wenig motivieren möchten, sollten Sie regelmäßig spenden: https://donate.sury.org/ WARNUNG: Add-apt-repository ist mit non defekt -UTF-8-Sprachumgebungen finden Sie unter https://github.com/oerdnj/deb.sury.org/issues/56 für die Problemumgehung: # LC_ALL = C.UTF-8 Add-Apt-Repository ppa: ondrej / php Weitere Informationen: https://launchpad.net/~ondrej/+archive/ubuntu/php Drücken Sie [ENTER], um fortzufahren, oder drücken Sie Strg-c, um das Hinzufügen abzubrechen. gpg: Schlüsselring '/tmp/tmpj6czswxr/secring.gpg' erstellt gpg: Schlüsselring '/ tmp / tmpj6czswxr / pubring.gpg 'erstellte gpg: Anfordern des Schlüssels E5267A6C vom Server hkp keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb erstellte gpg: Schlüssel E5267A6C: öffentlicher Schlüssel "Launchpad PPA für Ondřej gpg: Gesamtzahl verarbeitet: 1 gpg: importiert: 1 (RSA: 1) OK
Und dann habe ich meine Pakete und Distribution aktualisiert und die restlichen Dateien gesäubert:
$ sudo apt-get Aktualisierung $ sudo apt-get dist-upgrade $ sudo apt-get automatisch entfernen
Sie können Fehler wie folgt sehen:
Der Link /vmlinuz.old ist ein beschädigter Link. Wenn Sie den symbolischen Link vmlinuz.old entfernen, müssen Sie möglicherweise Ihren Bootloader erneut ausführen. [Grub]
Ich habe mich an dieser Stelle für einen Neustart entschieden, und das schien zu funktionieren:
$ sudo neu starten
Als Nächstes installieren wir PHP7 und alle seine Pakete:
sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php-apcu php7.0-gd php7.0-mcrypt php-memcache php7.0-curl php7.0-tidy php-xml php -json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-7.0-mbstring php7.0-xml
An diesem Punkt möchten Sie alle geänderten Einstellungen in Ihren Konfigurationsdateien nach migrieren /etc/php/7.0/apache2/php.ini
.
Ich musste auch hinzufügen extension = apc.so
in meine php.ini-Datei:
$ sudo nano /etc/php/7.0/apache2/php.ini
Ich habe das hier eingefügt:
; extension = php_openssl.dll; extension = php_pdo_firebird.dll; extension = php_pdo_mysql.dll; extension = php_pdo_oci.dll; extension = php_pdo_odbc.dll; extension = php_pdo_pgsql.dll; extension = php_pdo_lp_oqll; = php_shmop.dll Erweiterung = apc.so
Wenn Sie an diesem Punkt PHPMyAdmin ausführen, haben Sie Probleme beim Laden von Apache. In diesem Fall müssen Sie PHPMyAdmin deaktivieren:
$ sudo nano /etc/apache2/apache2.conf
Kommentieren Sie die Zeile aus, die sie unten lädt:
# Include von Verzeichnissen ignoriert die Backup-Dateien der Editoren und dpkg, # README.Debian für Details. # Include generische Auszüge von Anweisungen IncludeOptional conf-enabled / *. Conf # Include die virtuellen Host-Konfigurationen: IncludeOptional sites-enabled / *. Conf # vim: Syntax = Apache ts = 4 sw = 4 Ms = 4 sr noet # Include / etc /phpmyadmin/apache.conf
Dann habe ich aktiviert mcrypt
und mbstring
und dann Apache neu gestartet:
$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 neu starten
Ich habe dies auf einem Server getestet, auf dem Apps ausgeführt werden, die nur auf HTML, für PHP und für Yii1.x basieren, und alle haben funktioniert.
Als nächstes reparieren wir die PHPMyAdmin-Installation. Viele Leute hatten damit zu kämpfen.
Zuerst habe ich das Paket-Repository von Nijel hinzugefügt:
$ sudo add-apt-repository ppa: nijel / phpmyadmin Die neuesten phpMyAdmin-Pakete - https://www.phpmyadmin.net/. Basierend auf in Debian verfügbaren Paketen. Es gibt einige bemerkenswerte Änderungen: * Derzeit sind aktualisierte PHP-Pakete erforderlich. Sie können Pakete von https://launchpad.net/~ondrej/+archive/ubuntu/php/ abrufen. * Sie enthält eingebettete Kopien von PHP-Bibliotheken. Wenn Ihnen phpMyAdmin gefällt , Sie können die weitere Entwicklung unter https://www.phpmyadmin.net/donate/ oder https://www.phpmyadmin.net/sponsors/ unterstützen, vielen Dank! Weitere Informationen: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Drücken Sie [ENTER], um fortzufahren, oder ctrl-c, um das Hinzufügen abzubrechen. Gpg: Schlüsselring '/tmp/tmp6zix40vr/secring.gpg' erstellter Gpg: Schlüsselring '/tmp/tmp6zix40vr/pubring.gpg' erstellt gpg: Anfordern des Schlüssels 06ED541C vom Server hkp keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb erstellte gpg: Schlüssel 06ED541C: öffentlicher Schlüssel "Launchpad PPA für Michal Čihař "importiertes gpg: keine letztendlich vertrauenswürdigen Schlüssel gefunden gpg: Gesamtzahl der verarbeiteten Daten: 1 gpg: importiert: 1 (RSA: 1) OK
Dann habe ich die Pakete aktualisiert und PHPMyAdmin installiert:
$ sudo apt-get Update $ sudo apt-get installieren phpmyadmin
Beachten Sie, dass dies immer noch eine Reihe älterer PHP 5.x-Pakete neu lädt, PHPMyAdmin jedoch letztendlich funktioniert.
Dann habe ich die oben kommentierte PHPMyAdmin-Zeile unkommentiert.
$ sudo nano /etc/apache2/apache2.conf
Hier:
# Include von Verzeichnissen ignoriert die Backup-Dateien der Editoren und dpkg, # README.Debian für Details. # Include generische Auszüge von Anweisungen IncludeOptional conf-enabled / *. Conf # Include die virtuellen Host-Konfigurationen: IncludeOptional sites-enabled / *. Conf # vim: Syntax = Apache ts = 4 sw = 4 Ms = 4 sr noet Include / etc / phpmyadmin / apache.conf
Und ich habe Apache neu gestartet:
$ sudo-Dienst apache2 neu starten
Dadurch wurde PHPMyAdmin wieder am Standardspeicherort installiert, der sehr unsicher und hackbar ist. Folgen Sie den Anweisungen unter Installieren und Verwenden von PHPMyAdmin mit WordPress, um Ihre Installation zu sichern.
Danach habe ich ein kleines gebaut phpinfo ();
Datei zur Überprüfung, ob PHP 7 aktiv war:
Das Upgrade auf PHP 7 unter Ubuntu 14.x war problematisch und erforderte einige Änderungen an den veröffentlichten Skripts, um die richtigen Einstellungen zu erhalten. Ich hoffe, Sie finden das heutige Tutorial hilfreich.
Wenn Ihnen dies gefallen hat, beachten Sie bitte die nächsten Tutorials in unserer Programmierserie "Programmieren mit Yii2" und "Erstellen Sie Ihr Startup mit PHP", die den Aufbau meines Startup-Meeting-Planers dokumentieren.
Sie können mir auf @reifman auch auf Twitter folgen oder auf meiner Ausbilderseite nach Updates suchen.