Immagine di copertina tramite PONTIER
PHP 7 è stato rilasciato lo scorso dicembre. Una volta testato il codice in locale per eseguirlo, è ora di aggiornare il server di produzione. In generale, ho scoperto che la maggior parte dei miei siti funziona bene.
Tuttavia, sospetto che non molti siti siano ancora aggiornati. Spesso è più sicuro e più semplice rimanere nelle versioni precedenti. Infatti, un sondaggio su siti WordPress ha mostrato che pochi hanno:
"A novembre 2016, il 52,9% dei siti Web WordPress esegue una versione PHP meno PHP 5.5. Solo il 3,4% dei siti Web WordPress esegue PHP 7, l'attuale versione principale di PHP." tramite PHP Compatibility Checker.
Ma PHP 7 è uscito da quasi un anno.
Nell'episodio di oggi, ti guiderò attraverso il mio approccio raccomandato per l'aggiornamento a PHP 7 su Ubuntu 14.x e la risoluzione dei problemi con PHPMyAdmin, a cui sono finiti molti primi sviluppatori.
Al momento, se utilizzi WordPress, installa il plug-in Controllo compatibilità PHP per assicurarti che non si verifichino problemi imprevisti con l'array di plug-in.
Apprezzo sempre le tue idee e feedback. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica i tuoi pensieri nei commenti qui sotto.
Puoi anche raggiungermi su Twitter direttamente @reifman. Questo è particolarmente vero con gli script di aggiornamento più diffusi come questo, in cui l'esperienza e l'input degli utenti saranno unici e preziosi.
Ho provato ad utilizzare alcune guide standard per l'aggiornamento di PHP 7 e ho incontrato una serie di problemi diversi. Quindi gli script che condivido con te sono stati testati ripetutamente e credo che ciò che sto presentando funzionerà bene per te.
Ancora una volta, ho apprezzato molto Digital Ocean, che semplifica il backup del mio server e crea ripetutamente istanze di test per l'esecuzione da zero dei passaggi di aggiornamento.
Iniziamo.
A questo punto potresti voler prendere nota delle personalizzazioni PHP .ini e possibilmente eseguire il backup del tuo file php.ini, poiché in seguito dovrai migrare questi in PHP 7.
Questo dovrebbe aiutarti a trovare il tuo file .ini:
$ php --ini
Questo mi ha mostrato:
$ php --ini Avviso PHP: avvio PHP: impossibile caricare la libreria dinamica '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: impossibile aprire il file oggetto condiviso: Nessun file o directory in Unknown on line 0 File di configurazione (php.ini) Percorso: / etc / php5 / cli File di configurazione caricato: /etc/php5/cli/php.ini Ricerca di file .ini aggiuntivi in: / etc / php5 / cli / conf.d ...
Per Apache, il mio era dentro / Etc / php5 / apache2
.
Per prima cosa, eliminiamo tutti i nostri pacchetti PHP precedenti. Ho scoperto che era meglio farlo a fondo, coprendo non solo PHP5 ma anche 5.5 e 5.6, che avevo sperimentato sul mio server.
$ sudo apt-get -y purge php php-comune php-mcrypt php-mbstring $ sudo apt-get -y purge php5 php5-comune 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 purge php5.5 php5.5-comune php5.5-mcrypt php5.5-mbstring $ sudo apt-get - y purge php5.6 php5.6-common $ sudo apt-get autoremove
Quando non ho eliminato tutte queste varianti di PHP, ho avuto dei problemi in seguito cercando di configurare PHP 7. Se hai un approccio semplice, condividilo nei commenti.
$ sudo add-apt-repository ppa: ondrej / php Versioni PHP co-installabili: PHP 5.5, 5.6, PHP 7.0 e batterie incluse. Puoi ottenere maggiori informazioni sui pacchetti su https://deb.sury.org Per PHP 5.4 su Ubuntu 12.04 usa: ppa: ondrej / php5-oldstable BUGS & FEATURES: Questo PPA ora ha un tracker di problemi: https: //deb.sury .org / # bug-reporting PER FAVORE LEGGI: Se ti piace il mio lavoro e vuoi darmi un po 'di motivazione, ti preghiamo di considerare la donazione regolarmente: https://donate.sury.org/ ATTENZIONE: add-apt-repository è rotto con non -Fine locali UTF-8, vedere https://github.com/oerdnj/deb.sury.org/issues/56 per soluzione alternativa: # LC_ALL = C.UTF-8 add-apt-repository ppa: ondrej / php Altre informazioni: https://launchpad.net/~ondrej/+archive/ubuntu/php Premere [INVIO] per continuare o ctrl-c per annullare l'aggiunta di gpg: keyring '/tmp/tmpj6czswxr/secring.gpg' creato gpg: keyring '/ tmp / tmpj6czswxr / pubring.gpg 'creato gpg: richiesta chiave E5267A6C dal server hkp keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb creato gpg: chiave E5267A6C: chiave pubblica "Launchpad PPA per Ondřej Surý" importato gpg: numero totale elaborato: 1 gpg: importato: 1 (RSA: 1) OK
E poi ho aggiornato i miei pacchetti e la distribuzione e pulito tutti i file rimanenti:
$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get autoremove
Potresti vedere errori come questo:
Il link /vmlinuz.old è un collegamento danneggiato Rimozione del link simbolico vmlinuz.old potrebbe essere necessario eseguire nuovamente il boot loader [grub]
Ho scelto di riavviare a questo punto, e quello sembrava funzionare:
$ sudo reboot
Successivamente, installiamo PHP7 e tutti i suoi pacchetti:
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-pear php7.0-mbstring php7.0-xml
A questo punto vorrai migrare qualsiasi impostazione modificata nei tuoi file di configurazione a /etc/php/7.0/apache2/php.ini
.
Dovevo anche aggiungere extension = apc.so
al mio file php.ini:
$ sudo nano /etc/php/7.0/apache2/php.ini
L'ho incollato qui:
; 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_sqlite.dll; extension = php_pgsql.dll; estensione = estensione php_shmop.dll = apc.so
A questo punto, se esegui PHPMyAdmin, ti imbatterai in problemi di ricarica di Apache. In questo caso, dovrai disabilitare PHPMyAdmin:
$ sudo nano /etc/apache2/apache2.conf
Commenta la linea che la carica in basso:
# Include le directory che ignorano i file di backup di editors e dpkg, # vedi README.Debian per i dettagli. # Include snippet di istruzioni generici IncludeOptional conf-enabled / *. Conf # Include le configurazioni dell'host virtuale: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 sts = 4 sr noet # Include / etc /phpmyadmin/apache.conf
Quindi, ho abilitato mcrypt
e mbstring
e quindi riavviato Apache:
$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 restart
Ho provato questo su un server con app create solo su HTML, per PHP e per Yii1.x, e tutte hanno funzionato.
Quindi, ripariamo l'installazione di PHPMyAdmin. Un sacco di persone hanno lottato con questo.
Per prima cosa ho aggiunto il repository del pacchetto a nijel:
$ sudo add-apt-repository ppa: nijel / phpmyadmin Ultimi pacchetti phpMyAdmin - https://www.phpmyadmin.net/. Basato sui pacchetti disponibili in Debian. Ci sono alcuni cambiamenti notevoli: * attualmente richiede pacchetti PHP aggiornati, puoi ottenere pacchetti da https://launchpad.net/~ondrej/+archive/ubuntu/php/ * include le copie incorporate delle librerie PHP Se ti piace phpMyAdmin , puoi supportare il suo ulteriore sviluppo su https://www.phpmyadmin.net/donate/ o https://www.phpmyadmin.net/sponsors/, grazie! Maggiori informazioni: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Premere [INVIO] per continuare o ctrl-c per annullare l'aggiunta di gpg: keyring '/tmp/tmp6zix40vr/secring.gpg' creato gpg: keyring '/tmp/tmp6zix40vr/pubring.gpg' creato gpg: richiesta chiave 06ED541C dal server hkp keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb creato gpg: chiave 06ED541C: chiave pubblica "Launchpad PPA per Michal Čihař "gpg importato: nessuna chiave attendibile trovata gpg: numero totale elaborato: 1 gpg: importato: 1 (RSA: 1) OK
Quindi, ho aggiornato i pacchetti e installato PHPMyAdmin:
$ sudo apt-get update $ sudo apt-get install phpmyadmin
Nota, questo ricaricherà ancora un mucchio di vecchi pacchetti PHP 5.x, ma PHPMyAdmin funzionerà alla fine.
Quindi, ho decommentato la riga PHPMyAdmin che abbiamo commentato sopra.
$ sudo nano /etc/apache2/apache2.conf
Qui:
# Include le directory che ignorano i file di backup di editors e dpkg, # vedi README.Debian per i dettagli. # Include snippet di istruzioni generici IncludeOptional conf-enabled / *. Conf # Include le configurazioni dell'host virtuale: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 sts = 4 sr noet Includi / etc / phpmyadmin / apache.conf
E, ho riavviato Apache:
$ sudo service apache2 restart
Questo PHPMyAdmin installato torna nella posizione predefinita, che è molto insicuro e hackerabile. Si prega di seguire Installazione e utilizzo di PHPMyAdmin con WordPress per proteggere meglio l'installazione.
In seguito, ho costruito un piccolo phpinfo ();
file per verificare che PHP 7 fosse attivo:
L'aggiornamento a PHP 7 sulla mia attuale Ubuntu 14.x era problematico e richiedeva molte modifiche dagli script pubblicati per avere ragione. Spero che il tutorial di oggi sia utile.
Se ti è piaciuto questo, guarda i prossimi tutorial nella nostra serie Programming With Yii2 e Building the Startup With PHP, che documenta il processo di creazione della mia startup, Meeting Planner.
Puoi anche seguirmi @reifman su Twitter o controllare la mia pagina per gli istruttori per gli aggiornamenti.