Вызов неопределенной функции ssh2_connect() после обновления PHP 8.1.14

После обновления PHP 8.1 7 января 2023 года мы начали видеть «Вызов неопределенной функции ssh2_connect()» в ранее работающих скриптах. В выпуске PHP от 5 января список изменений вообще не упоминается SSH. Apache2 был перезапущен вручную, и в конечном итоге была выполнена полная перезагрузка.

Мы используем PHP 8.1.14 (cli) (построено: 7 января 2023 г., 08:34:41) (NTS) под Debian GNU/Linux 10 (buster).

В выводе phpinfo() я вижу версию libSSH libssh2/1.8.0 с /etc/php/8.1/apache2/php.ini в качестве основного загруженного ini. Однако в этом файле явно не включено какое-либо расширение SSH, а phpinfo() только перечисляет libSSH, и большая таблица конфигурации SSH не отображается.

Дополнительные проанализированные INI-файлы не ссылаются на SSH в своих именах.

/etc/php/8.1/apache2/conf.d/10-mysqlnd.ini, /etc/php/8.1/apache2/conf.d/10-opcache.ini, /etc/php/8.1/apache2/conf.d/10-pdo.ini, /etc/php/8.1/apache2/conf.d/15-xml.ini, /etc/php/8.1/apache2/conf.d/20-bcmath.ini, /etc/php/8.1/apache2/conf.d/20-bz2.ini, /etc/php/8.1/apache2/conf.d/20-calendar.ini, /etc/php/8.1/apache2/conf.d/20-ctype.ini, /etc/php/8.1/apache2/conf.d/20-curl.ini, /etc/php/8.1/apache2/conf.d/20-dom.ini, /etc/php/8.1/apache2/conf.d/20-exif.ini, /etc/php/8.1/apache2/conf.d/20-ffi.ini, /etc/php/8.1/apache2/conf.d/20-fileinfo.ini, /etc/php/8.1/apache2/conf.d/20-ftp.ini, /etc/php/8.1/apache2/conf.d/20-gd.ini, /etc/php/8.1/apache2/conf.d/20-gettext.ini, /etc/php/8.1/apache2/conf.d/20-iconv.ini, /etc/php/8.1/apache2/conf.d/20-intl.ini, /etc/php/8.1/apache2/conf.d/20-mbstring.ini, /etc/php/8.1/apache2/conf.d/20-mysqli.ini, /etc/php/8.1/apache2/conf.d/20-pdo_mysql.ini, /etc/php/8.1/apache2/conf.d/20-phar.ini, /etc/php/8.1/apache2/conf.d/20-posix.ini, /etc/php/8.1/apache2/conf.d/20-readline.ini, /etc/php/8.1/apache2/conf.d/20-shmop.ini, /etc/php/8.1/apache2/conf.d/20-simplexml.ini, /etc/php/8.1/apache2/conf.d/20-soap.ini, /etc/php/8.1/apache2/conf.d/20-sockets.ini, /etc/php/8.1/apache2/conf.d/20-sysvmsg.ini, /etc/php/8.1/apache2/conf.d/20-sysvsem.ini, /etc/php/8.1/apache2/conf.d/20-sysvshm.ini, /etc/php/8.1/apache2/conf.d/20-tokenizer.ini, /etc/php/8.1/apache2/conf.d/20-xmlreader.ini, /etc/php/8.1/apache2/conf.d/20-xmlwriter.ini, /etc/php/8.1/apache2/conf.d/20-xsl.ini, /etc/php/8.1/apache2/conf.d/20-zip.ini

Выдача sudo apt install php-ssh2 получает php-ssh2 уже является самой новой версией (1.3.1+0.13-7+0~20221209.25+debian10~1.gbp33475c).

Кроме того, вместе с sudo apt remove php-ssh2 были выданы sudo apt install php-ssh2 и sudo service apache2 restart, но это не изменило ошибку «Вызов неопределенной функции ssh2_connect()».

Нужно ли добавлять строку, явно включающую ssh2 в основной ini? Как лучше дальше гнать ошибку?

Попробуйте apt install php8.1-ssh2

Marwelln 10.01.2023 18:32

И service php8.1-fpm reload, если вы используете fpm.

Marwelln 10.01.2023 18:40

Разве это не расширение PECL?

arkascha 10.01.2023 18:44

@Marwelln, пожалуйста, добавьте ответ, чтобы я мог принять и поблагодарить вас!

jerrygarciuh 10.01.2023 19:07
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Запись файлов cookie в файл с помощью XSS R
Запись файлов cookie в файл с помощью XSS R
Привет всем :), здесь я продемонстрирую получение cookies, которые будут сохранены в виде txt файла, используя дефект XSS Reflected.
Каковы некоторые из продвинутых концепций языков программирования?
Каковы некоторые из продвинутых концепций языков программирования?
В языках программирования существует множество продвинутых концепций, но некоторые из них являются наиболее важными:
PHPStorm vs Visual Studio Code: Выбор лучшей IDE для ваших потребностей в веб-разработке
PHPStorm vs Visual Studio Code: Выбор лучшей IDE для ваших потребностей в веб-разработке
PHPStorm и Visual Studio Code - две популярные интегрированные среды разработки (IDE), используемые веб-разработчиками. Оба инструмента предлагают...
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Когда мы говорим о том, как сделать следующий шаг в качестве разработчика, мы должны понимать, что качество кода всегда является основным фокусом на...
Получение URL-адреса изображения курса в Moodle с помощью PHP
Получение URL-адреса изображения курса в Moodle с помощью PHP
Moodle - это популярная система управления обучением с открытым исходным кодом, используемая многими учебными заведениями и организациями по всему...
0
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не знаю, как работает установка конкретных модулей php без указания номера версии, но чтобы убедиться, что вы получаете нужный модуль для вашей конкретной версии PHP, добавьте версию после php. В вашем случае это будет php8.1

Таким образом, чтобы установить ssh2 для PHP 8.1 с помощью apt, вы должны использовать apt install php8.1-ssh2.

Если вы используете FPM под управлением PHP, вам необходимо убедиться, что вы перезагрузили его после установки нового модуля (service php8.1-fpm reload).

Другие вопросы по теме