Giorni fa ho dovuto eseguire l'aggiornamento a PHP 7.1 sul server nixcp.com, è stato un aggiornamento importante poiché stavo eseguendo PHP 5.6.x.
Questo era in cima alla mia lista di cose da fare dopo aver letto che PHP 7.1 era il 20% più veloce di PHP 7.0 (e sappiamo tutti che PHP 7.0 è circa due volte più veloce di PHP 5.6.x), poiché sono ossessionato dalla velocità del web e dal web prestazioni, questa è stata l'occasione per testare PHP 7.1 e i suoi vantaggi.
Installa PHP 7.1 su CentOS 7 passo dopo passo
Dopo aver cercato se tutte le mie app PHP fossero compatibili, ho avviato il processo di aggiornamento da PHP 5.6.x a PHP 7.1 su CentOS 7.x 64 bit. Questa è la procedura che ho usato sul mio server.
Ottieni un elenco di tutti i tuoi pacchetti PHP attuali, per ogni evenienza:
rpm -qa | grep php
Dovrebbe essere simile a questo:
[[email protected]:~]rpm -qa | grep php php-common-5.6.30-1.el7.remi.x86_64 php-pear-1.10.3-1.el7.remi.noarch php-pecl-memcache-3.0.8-4.el7.remi.5.6.x86_64 php-devel-5.6.30-1.el7.remi.x86_64 php-mysqlnd-5.6.30-1.el7.remi.x86_64 php-mcrypt-5.6.30-1.el7.remi.x86_64 php56-php-common-5.6.30-1.el7.remi.x86_64 php-cli-5.6.30-1.el7.remi.x86_64 php-pecl-jsonc-devel-1.3.10-2.el7.remi.5.6.x86_64 php-pecl-igbinary-2.0.1-1.el7.remi.5.6.x86_64 php-gd-5.6.30-1.el7.remi.x86_64 php-mbstring-5.6.30-1.el7.remi.x86_64 php56-runtime-2.1-5.el7.remi.x86_64 php56-php-pecl-msgpack-0.5.7-1.el7.remi.x86_64 php-5.6.30-1.el7.remi.x86_64 php-pecl-jsonc-1.3.10-2.el7.remi.5.6.x86_64 php-xml-5.6.30-1.el7.remi.x86_64 php-process-5.6.30-1.el7.remi.x86_64 php-xcache-3.2.0-1.el7.remi.5.6.x86_64 php-pecl-memcached-2.2.0-3.el7.remi.5.6.x86_64 php-soap-5.6.30-1.el7.remi.x86_64 php-opcache-5.6.30-1.el7.remi.x86_64 php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64 php56-php-pecl-igbinary-2.0.1-1.el7.remi.x86_64 php-pdo-5.6.30-1.el7.remi.x86_64 php-fpm-5.6.30-1.el7.remi.x86_64 php56-php-pecl-zip-1.13.5-1.el7.remi.x86_64 php-pecl-zip-1.13.5-1.el7.remi.5.6.x86_64 php-pecl-msgpack-0.5.7-1.el7.remi.5.6.x86_64 php-xmlrpc-5.6.30-1.el7.remi.x86_64 [[email protected]:~]
Installa Remi Repo per CentOS 7.x
Avevo già installato il repository di Remi, ma se non lo fai, puoi farlo usando questi comandi:
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm
Dopodiché, abilita i pacchetti PHP-71 dal tuo repository Remi, esegui questo comando:
yum-config-manager --enable remi-php71
Uscita prevista:
[[email protected]:~]yum-config-manager --enable remi-php71 Loaded plugins: fastestmirror, langpacks ==== repo: remi-php71 ======= [remi-php71] async = True bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7 baseurl = cache = 0 cachedir = /var/cache/yum/x86_64/7/remi-php71 check_config_file_age = True compare_providers_priority = 80 cost = 1000 deltarpm_metadata_percentage = 100 deltarpm_percentage = enabled = True enablegroups = True ... ... ...
Quindi esegui yum update:
yum update -y
Se non stai aggiornando e vuoi solo installare PHP 7.1 su CentOS 7, esegui semplicemente:
yum install php php-devel php-gd php-mbstring php-mcrypt php-soap php-mysqlnd
Dovrebbe aggiornare tutti i tuoi attuali pacchetti PHP a PHP 7.1, come vedi di seguito:
Se riscontri questo problema:
You could try using --skip-broken to work around the problem ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: php-5.6.30-1.el7.remi.x86_64 has missing requires of httpd-mmn = ('0', '20120211x8664', None)
Può essere risolto installando il pacchetto httpd, che non uso ma è richiesto:
yum install httpd -y
Successivamente ho disabilitato httpd dal processo di avvio per assicurarmi che non tenti di avviarsi insieme a Nginx e causi un conflitto con la porta 80:
systemctl disable httpd
Rimuovere Xcache, perché per quanto vedo non è disponibile per PHP 7.1.x
yum remove php-xcache* -y
Se conservi Xcache, potrebbe causare un errore yum come vedi di seguito:
--> Finished Dependency Resolution Error: Package: 1:php-xcache-3.2.0-1.el7.remi.5.6.x86_64 (@remi-php56) Requires: php(zend-abi) = 20131226-64 Removing: php-common-5.6.30-1.el7.remi.x86_64 (@remi-php56) php(zend-abi) = 20131226-64 Updated By: php-common-7.1.3-1.el7.remi.x86_64 (remi-php71) php(zend-abi) = 20160303-64 Available: php-common-5.4.16-42.el7.x86_64 (base) php(zend-abi) = 20100525-64 Available: php-common-5.6.29-1.el7.remi.x86_64 (remi-php56) php(zend-abi) = 20131226-64 Available: php-common-7.1.2-1.el7.remi.x86_64 (remi-php71) php(zend-abi) = 20160303-64 Error: Package: 1:php-xcache-3.2.0-1.el7.remi.5.6.x86_64 (@remi-php56) Requires: php(api) = 20131106-64 Removing: php-common-5.6.30-1.el7.remi.x86_64 (@remi-php56) php(api) = 20131106-64 Updated By: php-common-7.1.3-1.el7.remi.x86_64 (remi-php71) php(api) = 20160303-64 Available: php-common-5.4.16-42.el7.x86_64 (base) php(api) = 20100412-64 Available: php-common-5.6.29-1.el7.remi.x86_64 (remi-php56) php(api) = 20131106-64 Available: php-common-7.1.2-1.el7.remi.x86_64 (remi-php71) php(api) = 20160303-64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
Una cosa che ho notato:alcuni pacchetti provengono ancora dalla versione PHP 5.6:
[[email protected]:~]rpm -qa | grep php56 php56-php-common-5.6.30-1.el7.remi.x86_64 php56-runtime-2.1-5.el7.remi.x86_64 php56-php-pecl-msgpack-0.5.7-1.el7.remi.x86_64 php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64 php56-php-pecl-igbinary-2.0.1-1.el7.remi.x86_64 php56-php-pecl-zip-1.13.5-1.el7.remi.x86_64
Rimuovi quelli e installa le versioni 7.1 da Remi:
yum remove php56*
yum install yum install php71-php-common php71-runtime php71-php-pecl-msgpack php71-php-pecl-jsonc php71-php-pecl-igbinary php71-php-pecl-zip
E l'aggiornamento da PHP 5.6 a PHP 7.1 è stato completato.
Infine, assicurati di riavviare il tuo http e php-fpm per applicare le modifiche:
systemctl restart nginx systemctl restart php-fpm
Questo è tutto, ora sai come aggiornare o installare PHP 7.1 su CentOS 7. Per favore fammi sapere se hai domande o problemi seguendo questo tutorial.
Installa / aggiorna a PHP 7.1 su CentOS 7 / RHEL 7 utilizzando Remi RPM Repo Ultima modifica:5 aprile 2017 da Esteban Borges