Di recente ho acquistato il plug-in WordPress EduExpression per un client per configurare un software di esame. Sono stato in grado di installare e configurare il plugin senza troppi problemi. Tuttavia, il problema è iniziato a verificarsi quando è stato effettuato l'accesso all'accesso dello studente:la pagina del plug-in è diventata vuota quando lo studente ha tentato di sostenere un esame. Bene, ho un supporto giusto? Ho contattato il team di supporto e mi hanno detto che il plugin non funziona con PHP 7.1 e supporta solo PHP 5.6. Questo è il mio male, perché avevo configurato il mio server con PHP 7.1 e tutto il mio sito Web client funzionava su PHP 7.1. Ora per far funzionare EduExpression, devo configurare la versione PHP 5.6. Il downgrade di PHP non è mai una buona opzione, ma ho dovuto farlo per far funzionare questo plugin per il client. Che ne dici di configurare PHP 5.6 solo per un particolare dominio e lasciare che il resto funzioni su PHP 7.1. Bene, in questo tutorial spiegherò come configurare più versioni dell'ambiente PHP e collegare una versione specifica di PHP con un particolare dominio in NGINX.
AmbienteSistema operativo:CentOS 7, Server Web:Nginx, PHP:v7.1 (predefinito), PHP FastCGI:PHP-FPM
Nota:l'ambiente sopra è già configurato e funziona correttamente.
Passaggio 1 :Installazione di più versioni di PHP, ad esempio PHPv5.6 insieme a PHP7.1
Qui uso yum
comando per installare più versioni di PHP insieme ai moduli necessari come mostrato di seguito:
Installazione della versione PHP5.6
# yum install php56 php56-php-common php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo
Installa PHP-FPM per la versione PHP 5.6
PHP su Nginx funziona tramite PHP-FPM (FastCGI Process manager). PHP-FPM è un'implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, in particolare quelli più affollati.
# yum install php56-php-fpm
Bene, abbiamo installato PHP 5.6, ma dovremmo assicurarci che la versione predefinita di PHP sia ancora 7.1.
# php -v PHP 7.1.22 (cli) (built: Sep 12 2018 07:22:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.22, Copyright (c) 1999-2018, by Zend Technologies
Configura PHP-FPM e PHP56-PHP-FPM
La parte più importante di questo tutorial è configurare due diversi PHP-FPM per due versioni di PHP. Qui configureremo due diverse versioni di PHP-FPM con cui Nginx funzionerà. La cosa principale durante la configurazione è l'utente/gruppo di processi FastCGI e le porte su cui sono in ascolto.
File di configurazione PHP-FPM (impostazione predefinita 7.1)./etc/php-fpm.d/www.conf
Assicurati che l'utente/gruppo sia impostato su nginx
(Il valore predefinito è apache).
user = nginx group = nginx
Trova il parametro di ascolto e impostalo sulla porta 9000 su cui verranno ricevute le richieste FastCGI.
listen = 127.0.0.1:9000 [php-fpm]File di configurazione PHp56-PHP-FPM
/opt/remi/php56/root/etc/php-fpm.d/www.conf
Assicurati che l'utente/gruppo abbia impostato nginx
(Il valore predefinito è apache).
user = nginx group = nginx
Trova il parametro di ascolto e impostalo sulla porta 9001 su cui verranno ricevute le richieste FastCGI.
listen = 127.0.0.1:9001 [php56-php-fpm]
Abilita PHP-FPM, PHP56-PHP-FPM e NGINX avvio automatico all'avvio del sistema su CentOS 7
Dopo aver completato le configurazioni di cui sopra, è necessario abilitare PHP-FPM, PHP56-PHP-FPM e Nginx per l'avvio automatico all'avvio del sistema.
# systemctl enable nginx # systemctl enable php-fpm # systemctl enable php56-php-fpmDisattiva SELinux
#sudo imposta 0
Configura domini con PHP-FPM corrispondente per esecuzioni PHP
Apri il file di configurazione del dominio corrispondente di Nginx (/etc/nginx/conf.d/
) e cerca la riga fastcgi_pass
e modificalo di conseguenza per collegare la versione corretta di PHP che deve eseguire.
File di configurazione Nginx del dominio 1:/etc/nginx/conf.d/example1.conf
server { listen :80; server_name example1.com; server_name www.example1.com; root /home/example1/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?q=$uri$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; } }
File di configurazione Nginx del dominio 2: /etc/nginx/conf.d/example2.conf
server { listen :80; server_name example2.com; server_name www.example2.com; root /home/example2/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?q=$uri$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; } }
Controlla i file di configurazione di Nginx per eventuali errori di sintassi prima di riavviare Nginx
# nginx -t
Riavvia Nginx, PHP-fpm, PHp56-PHP-FPM
# systemctrl restart nginx, php-fpm php56-php-fpm
Testa diverse versioni PHP per diversi domini
Crea phpinfo
diversi file nella directory principale dei due domini diversi
# echo "<?php phpinfo(); ?>" > /home/example1/public_html/info.php # echo "<?php phpinfo(); ?>" > /home/example2/public_html/info.php
Ora apri info.php
nel browser per verificare example1.com usando PHP 7.1 e example2.com usando PHP 5.6.
http://example1.com/info.php
http://example2.com/info.php
Questo è tutto! Ho appena distribuito il plugin EduExpression su example2.com che gira su PHP 5.6.