WP-CLI, ca multe alte unelte si instrumente software, va detecta versiunea PHP in functie de versiunea implicita / primara PHP instalata pe un server, mai degraba decat versiunea PHP atribuita efectiv website-ului printr-o configurare a versiunii PHP multiple. Este posibil ca website-ul dvs. sa fie configurat pentru a utiliza PHP 7.3, dar poate aparea următoarea eroare in cazul in care versiunea dvs. PHP primara este setata pe o versiune PHP mai veche:
Your server is running PHP version 5.5.38 but WordPress 5.2.3 requires at least 5.6.20.
Eroarea de mai sus s-a produs cu o instalare a fisierului phar WP-CLI pentru un website gazduit prin intermediul unui server cPanel. Acest cPanel avea setata versiunea PHP 5.5 implicita/primara iar website-ul utiliza PHP 7.3:
[~]# /usr/local/cpanel/bin/rebuild_phpconf --current
DEFAULT PHP: ea-php55
ea-php54 SAPI: suphp
ea-php55 SAPI: suphp
ea-php56 SAPI: suphp
ea-php70 SAPI: suphp
ea-php73 SAPI: suphp
[~]#
Am confirmat ca versiunea PHP atribuita site-ului era PHP 7.3 (care funcționeaza datorita patch-ului PHPRC din cPanel). Prin schimbarea DOCROOT-ului utilizatorului ("nume de utilizator") al site-ului si apoi verificarea versiunii PHP utilizate, am putut confirma ca versiunea PHP alocată site-ului era PHP 7.3 și, astfel, am ajuns la concluzia ca WP-CLI ar trebui sa funcționeze perfect cu website-ul:
cd /home/username/public_html
php -v
Pentru servere administrate prin cPanel, puteti verifica alternativ fisierele .htaccess/.user.ini/php.ini din Document Root-ul website-ului. Daca nu exte specificata nicio versiune PHP in mod explicit, atunci versiunea implicita PHP este in uz.
Aceste comenzi sunt scrise intr-o maniera care permite utilizatorului cu drepturi root sa execute WP- CLI din linia de comanda dar care poate sa ramana autentificat ca utilizator root. Comenzile pot fi executate cu un ownership propriu dar nu necesita drepturi su (super user) pentru sesiunea ramasa in terminal.
Documentatiile WP-CLI prevad ca puteti specifica versiunea PHP de utilizat printr-o variabilă de mediu doar in instalari non-phar.
Astfel, pentru o instalare non-phar a WP-CLI, variabila de mediu se poate seta la cerere chiar înainte de comanda dvs.:
WP_CLI_PHP=/opt/cpanel/ea-php73/root/usr/bin/php
Functionand ca utilizator „nume de utilizator” cu drepturi de root, veți executa urmatoarea comanda (pentru o instalare non-phar):
su -s /bin/bash -c "WP_CLI_PHP=/opt/cpanel/ea-php73/root/usr/bin/php /usr/local/cpanel/3rdparty/bin/wp --info" username
Acest lucru va oferi rezultate legate de mediu, PHP-ul binar și informații utilizate (în care veți dori să acordați o atenție deosebită versiunii PHP detectate). Atunci cand a rulat o instalare de tip WP-CLI, iar binarul PHP aratat este cel pe care l-ati specificat manual in comanda, totuși, PHP-ul folosit este incă cel al versiunii implicite PHP 5.5:
root@host [/home/username/public_html]# su -s /bin/bash -c "WP_CLI_PHP=/opt/cpanel/ea-php73/root/usr/bin/php /usr/local/cpanel/3rdparty/bin/wp --info" username
OS: Linux host.domain.tld 3.10.0-957.12.2.vz7.96.21 #1 SMP Thu Jun 27 15:10:55 MSK 2019 x86_64
Shell: /bin/bash
PHP binary: /opt/cpanel/ea-php73/root/usr/bin/php
PHP version: 5.5.38
php.ini used: /opt/cpanel/ea-php55/root/etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/username/public_html
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.1.0
root@host [/home/username/public_html]#
Asa cum am specificat, specificarea variabilei de mediu WP_CLI_PHP nu functioneaza in instalari phar ale WP-CLI. Deci, cum putem rezolva acest lucru?
Am aflat urmatoarele, care au functionat in serverul administrat cu cPanel:
su -s /bin/bash -c "/opt/cpanel/ea-php73/root/usr/bin/php /usr/local/cpanel/3rdparty/share/cpanel-wp-cli/wp-cli.phar --info" username
pentru DirectAdmin, puteti incerca:
su -s /bin/bash -c "/usr/local/php73/bin/php /usr/local/bin/wp --info" username
Comanda de mai sus a fost rulata pentru utilizatorul username din Document Root-ul website-ului utilizatorului (/home/username/public_html/ este Document Root implicit pentru domeniile primare din cPanel).
Observați ca la executarea acestei comenzi, versiunea corectă PHP este afișata atât in versiunea binară, cat si in versiunea PHP folosită:
root@host [/home/username/public_html]# su -s /bin/bash -c "/opt/cpanel/ea-php73/root/usr/bin/php /usr/local/cpanel/3rdparty/share/cpanel-wp-cli/wp-cli.phar --info" username
OS: Linux 3.10.0-957.12.2.vz7.96.21 #1 SMP Thu Jun 27 15:10:55 MSK 2019 x86_64
Shell: /bin/bash
PHP binary: /opt/cpanel/ea-php73/root/usr/bin/php
PHP version: 7.3.9
php.ini used: /opt/cpanel/ea-php73/root/etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/username/public_html
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.1.0
root@host [/home/username/public_html]#
Speram ca aceste informatii pot economisi timp prețios, impiedicand nevoia de a trece de la utilizatorul cu drepturi de root la user shell si de a efectua manual modificari care altfel ar putea fi facute mult mai rapid prin WP-CLI, atat timp cat versiunea PHP corecta este detectata.
Referinte
Detalii despre cum sa rulati WP-CLI cu o versiune PHP specificată ca utilizator "nume utilizator" fara a parasi shell-ul root pentru o instalare WP-CLI phar. Asigurati-va ca înlocuiti phpXX cu versiunea corecta PHP (ex. php56, php70, php73, etc.,).
cPanel
Din document root-ul website-ului ca nume de utilizator "nume utilizator" cu drepturi de root in terminal:
su -s /bin/bash -c "/opt/cpanel/ea-phpXX/root/usr/bin/php /usr/local/cpanel/3rdparty/share/cpanel-wp-cli/wp-cli.phar --info" username
DirectAdmin
Din document root-ul website-ului ca nume de utilizator "nume utilizator" cu drepturi de root in terminal:
su -s /bin/bash -c "/usr/local/phpXX/bin/php /usr/local/bin/wp --info" username
Daca intampinati probleme in aplicarea instructiunilor de mai sus va rugam sa ne contactati. HostX ofera cele mai rapide servere VPS KVM si va poate oferi asistenta specializata in administrarea DirectAdmin.