Zone pārvaldītajos serveros (koplietojamais hostings, Smart Dedicated serveri) noklusējuma PHP CLI versija ir tāda pati kā galvenajam web hostam.
Pašreiz izmantoto versiju vari pārbaudīt šādi:
php -v
Tas parādīs līdzīgu izvadi:
virt1234:sn-69-1.tll07.zoneas.eu:~> php -v PHP 8.3.7 (cli) (built: May 23 2024 08:53:27) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.7, Copyright (c) Zend Technologies with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
Citu versiju izmantošana
Mainā domēna web hosta PHP versijas maiņa maina arī noklusējuma versiju konsolē. PHP versiju vari mainīt Webserver sadaļā Webhosting pārvaldībā My Zone vadības panelī.
Lai mainītu PHP versiju tikai konsolē, vari izveidot simbolisko saiti (symlink) komandai php mapē ~/bin, norādot uz vēlamās PHP CLI versijas failu, vai arī izmantot PHP CLI komandas ar versijas numuru komandas nosaukumā.
Pastāvīga php simboliskā saite
Ja vēlies izmantot PHP versiju 8.2, tev jāizpilda komanda:
> mkdir -p ~/bin && ln -sf /usr/bin/php82-cli ~/bin/php
Ja vēlies izmantot PHP 7.4 vai kādu citu versiju, komandā php-cli failam jāizmanto atbilstošais versijas numurs bez punkta:
> mkdir -p ~/bin && ln -sf /usr/bin/php74-cli ~/bin/php
Pēc šīs komandas izpildes pieslēdzies SSH no jauna, un pēc tam php -v rādīs nomainīto versiju.
NB! Pēc šīs simboliskās saites izveides PHP CLI versija nākotnē automātiski nemainīsies, kad mainīsies PHP versija galvenajam web hostam.
Lai noņemtu esošo simbolisko saiti, izpildi šo komandu:
> rm -f ~/bin/php
PHP CLI komandas ar dažādām versijām
Ir arī atsevišķas komandas katrai PHP CLI versijai, ko var izmantot kā alternatīvu komandai php. Piemēram:
> php83-cli -v PHP 8.3.7 (cli) (built: May 23 2024 08:53:27) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.7, Copyright (c) Zend Technologies with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
Ja jāizmanto PHP CLI 7.4 vai jebkura cita versija, komandā jānorāda atbilstošais versijas numurs bez punkta.
Kuras PHP CLI binārās versijas ir pieejamas, vari pārbaudīt ar komandu:
> l /usr/bin/php*-cli
Nepieciešamā php.ini ielāde
Tā kā pēc noklusējuma PHP CLI izmanto to pašu versiju kā galvenā domēna PHP, PHP CLI tiek ielādēts arī galvenā domēna PHP konfigurācijas fails php.ini.
Ja PHP CLI tiek izmantota cita versija, joprojām tiks izmantots galvenā domēna PHP konfigurācijas fails php.ini.
Lai PHP CLI izmantotu nepieciešamās versijas php.ini failu vai kādu konkrētu php.ini failu, jāizmanto vides mainīgais PHPRC, kura vērtība jāiestata uz vajadzīgā php.ini faila ceļu.
Tas var būt hostinga servera PHP CLI php.ini, (apakš)domēna php.ini, globāls php.ini vai pilnīgi atsevišķs php.ini fails:
> PHPRC=/etc/php/cli-php8.2/php.ini > PHPRC=/data01/virt1234/domeenid/www.example.com/phpini/https/sub.example.com/php.ini > PHPRC=/data01/virt1234/domeenid/www.example.com/phpini/global/php.ini > PHPRC=/data01/virt1234/domeenid/www.example.com/custom.ini
Vai arī izmanto vides mainīgo PHPRC tajā pašā komandā, apvienojot abas komandas kopā:
> PHPRC=/etc/php/cli-php8.2/php.ini && wp cli info
Lai izmantotu citu versiju, tev jāmaina versijas numurs php.ini faila ceļā.
Kad galvenajam php.ini failam jāpieliek vai jāpārraksta papildu PHP iestatījumi vai direktīvas, vari izmantot vides mainīgo PHP_INI_SCAN_DIR, lai ielādētu atsevišķu php.ini. Iestati tā vērtību uz ceļu līdz direktorijai, kurā atrodas nepieciešamais php.ini fails:
> PHP_INI_SCAN_DIR=/path/to/dir
Savukārt, ja eksistē globāls php.ini fails, kuru nevajadzētu ielādēt, tev jāiestata PHP_INI_SCAN_DIR uz tukšu vērtību:
> PHP_INI_SCAN_DIR=
Pastāvīga konfigurācija
Izpildot iepriekšējās komandas, kas nosaka ielādētos php.ini failus, vides mainīgie PHPRC un PHP_INI_SCAN_DIR ir spēkā tikai SSH sesijas laikā.
Ja nepieciešams, lai PHP CLI pastāvīgi izmantotu vajadzīgo php.ini failu, šie vides mainīgie jāpievieno failam ~/.bashrc.
Fails ~/.bashrc tiek automātiski ielādēts katras SSH sesijas sākumā, un tas ielādē arī tajā iekļautos vides mainīgos.
Iepriekšējos komandu piemēros — PHPRC un PHP_INI_SCAN_DIR pievienošana ~/.bashrc un tā pārlādēšana:
> echo 'PHPRC=/etc/php/cli-php8.2/php.ini' >> ~/.bashrc && source ~/.bashrc > echo 'PHP_INI_SCAN_DIR=/path/to/dir' >> ~/.bashrc && source ~/.bashrc
Vides mainīgo PHPRC un PHP_INI_SCAN_DIR rindas no faila ~/.bashrc vari dzēst ar šādām komandām:
> sed -i '/^PHPRC=/d' ~/.bashrc > sed -i '/^PHP_INI_SCAN_DIR=/d' ~/.bashrc
Biežāk sastopamās kļūdas
Ja konsolē redzi kļūdas paziņojumu, kas saistīts ar PHP CLI vai php.ini, tev jāpārbauda, vai šo kļūdu neizraisa atšķirība starp PHP CLI un ielādētā php.ini versijām.
Papildus kļūdu var izraisīt ielādētais globālais php.ini, ja tas ir paredzēts vecākai PHP versijai vai ja tajā esošie iestatījumi rada konfliktus.
Ja starp PHP CLI un ielādētā php.ini versijām ir būtiska atšķirība, tas var liegt izmantot PHP CLI konsolē, jo php.ini fails var norādīt ielādēt paplašinājumu, kas konkrētajai PHP CLI versijai neeksistē.
Piemēram, šādos gadījumos bieži sastopams kļūdas paziņojums konsolē ir:
Warning: PHP Startup: Unable to load dynamic library 'php_xmlrpc.so'.
Vai komandai php tiek izmantota simboliskā saite, vari pārbaudīt ar šādu komandu. Simboliskās saites izmantošanu norāda inode tips l (link) un simboliskās saites forma /data01/virt1234/bin/php.
> l $(whereis php)
Kāda ir versija un kuri php.ini faili tiek ielādēti PHP CLI, vari pārbaudīt ar šādu komandu:
> php -v | head -1 && readlink -f $(whereis php) && php --ini | grep -iE 'Configuration File|Additional'
Lai konsolē PHP CLI izmantotu nepieciešamās versijas php.ini konfigurācijas failu, tev jāizmanto vides mainīgais PHPRC (PHP doc.: PHP Runtime Configuration).