1. Home
  2. Техническое
  3. Apache
  4. Как изменить стандартный php-cli в консоли
  1. Home
  2. Техническое
  3. PHP
  4. Как изменить стандартный php-cli в консоли

Как изменить стандартный php-cli в консоли

Версия PHP-CLI по умолчанию для управляемых серверов Zone (виртуальные серверы, приватные серверы) имеет ту же версию PHP, что и основной хост.

Вы можете проверить текущую версию, выполнив в консоли следующую команду:

php -v

В результате получается следующий ответ:

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

Использование других версий.

Изменение версии PHP главного домена веб-хостинга также изменит версию консоли по умолчанию. Изменить версию PHP можно в Мой Zone через управление веб-хостингом в разделе управления веб-сервером.

Чтобы изменить версию PHP, используемую только в консоли, необходимо создать симлинк для комманды php для команды php в каталоге ~/bin, которая указывает на файл PHP CLI с нужной версией, или использовать команду PHP CLI, имя которой уже содержит соответствующую версию PHP.

Инструкция по созданию SSH-соединения

Подключение через протокол SSH

Если вы хотите использовать PHP CLI версии 8.2, вам необходимо выполнить эту команду:

> mkdir -p ~/bin && ln -sf /usr/bin/php82-cli ~/bin/php

Если вы хотите использовать PHP CLI 7.4 или любую другую версию, вы должны использовать номер версии без точки в команде для файла php-cli:

> mkdir -p ~/bin && ln -sf /usr/bin/php74-cli ~/bin/php

После добавления симлинка нужно выйти из системы и снова войти, после чего команда php -v покажет измененную версию.

PS! Если вы сделаете этот симлинк, версия PHP CLI больше не будет меняться автоматически.
Чтобы вернуться к версии PHP CLI по умолчанию, симлинк необходимо удалить с помощью следующей команды:

> rm -f ~/bin/php

Команды CLI для разных версий PHP

Для каждой версии PHP CLI существуют отдельные команды, которые можно использовать в качестве альтернативы команде php. Например:

> 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

Если вы хотите использовать PHP CLI 7.4 или другую версию, вы должны использовать номер версии без точки в команде.

Какую версию бинарных файлов PHP CLI вы используете, можно проверить с помощью команды:

> l /usr/bin/php*-cli

Загрузка необходимого файла php.ini

Поскольку по умолчанию для PHP CLI используется та же версия, что и для главного домена PHP, конфигурационный файл php.ini для головного домена PHP также загружается для PHP CLI.

Если для PHP CLI используется другая версия PHP, будет по-прежнему использоваться конфигурационный файл php.ini с версией PHP главного домена.

Для того чтобы PHP CLI использовал файл php.ini нужной версии или любой другой файл php.ini, необходимо использовать переменную PHPRC, которая является путем к нужному файлу php.ini.
Это может быть php.ini PHP CLI хостингового сервера, php.ini (под)домена, глобальный php.ini или совершенно отдельный php.ini файл:

> 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

Или используйте переменную окружения PHPRC в той же команде, соединив две команды вместе:

> PHPRC=/etc/php/cli-php8.2/php.ini && wp cli info

Чтобы использовать другие версии, необходимо изменить номер версии в строке файла php.ini.

Если вам нужно добавить или перезаписать некоторые настройки или директивы PHP в дополнение к основному файлу php.ini, вы можете использовать переменную окружения PHP_INI_SCAN_DIR для загрузки отдельного php.ini и установить ее в путь к директории, в которой находится нужный файл php.ini:

> PHP_INI_SCAN_DIR=/path/to/dir

И наоборот, например, если есть глобальный файл php.ini, который не нужно загружать, PHP_INI_SCAN_DIR следует установить пустым:

> PHP_INI_SCAN_DIR=

Постоянная настройка

При выполнении предыдущих команд, определяющих загруженные файлы php.ini, переменные окружения PHPRC и PHP_INI_SCAN_DIR остаются действительными только на время сеанса SSH.
Если необходимо, чтобы PHP CLI постоянно использовал необходимый файл php.ini, эти переменные окружения должны быть добавлены в файл ~/.bashrc.
Файл ~/.bashrc автоматически загружается в начале каждого сеанса SSH, и в него также загружаются содержащиеся в нем переменные окружения.

В предыдущих примерах команд добавьте PHPRC и PHP_INI_SCAN_DIR в ~/.bashrc и перезагрузите его:

> echo 'PHPRC=/etc/php/cli-php8.2/php.ini' >> ~/.bashrc && source ~/.bashrc
> echo 'PHP_INI_SCAN_DIR=/path/to/dir' >> ~/.bashrc && source ~/.bashrc

Строки переменных окружения PHPRC и PHP_INI_SCAN_DIR могут быть удалены из файла ~/.bashrc следующими командами:

> sed -i '/^PHPRC=/d' ~/.bashrc
> sed -i '/^PHP_INI_SCAN_DIR=/d' ~/.bashrc

Самые распространенные ошибки

Если в консоли отображается сообщение об ошибке, связанной с PHP CLI или php.ini, необходимо проверить, не вызвана ли эта ошибка разницей между версиями PHP CLI и загруженного php.ini.
Кроме того, ошибка может быть вызвана загруженным глобальным php.ini, если он предназначен для более старой версии PHP или если настройки в нем вызывают конфликты.

Если между версиями PHP CLI и загруженного php.ini есть существенная разница, это может помешать использованию PHP CLI в консоли, поскольку в файле php.ini может быть указано на загрузку расширения, которое не существует для версии PHP CLI.
Например, распространенным сообщением об ошибке в консоли в таких случаях является:
Warning: PHP Startup: Unable to load dynamic library 'php_xmlrpc.so'.

Используется ли симлинк для команды php или нет, можно проверить с помощью следующей команды. На использование симлинка указывает тип иноде l (ссылка) и форма симлинка /data01/virt1234/bin/php.

> l $(whereis php)

Какова версия и какие файлы php.ini загружены для PHP CLI, можно проверить с помощью следующей команды:

> php -v | head -1 && php --ini | grep -iE 'Configuration File|Additional'

Чтобы использовать файл конфигурации php.ini с нужной версией для PHP CLI в консоли, необходимо использовать переменную окружения PHPRC (PHP Runtime Configuration).

Updated on 13. Jun 2024
Was this article helpful?

Related Articles