找不到 ssh2 ssh2_connect() 函数
ssh2 ssh2_connect() function not found
所以我构建了一个 class,它使用 php 中的 ssh2 包。我已经在 apache2 服务器上成功设置并使用和测试了这个 class。 运行ning 所在的工作服务器是 litespeed 的一个实例。我已经在网上搜索了一种让 ssh2 与这个 litespeed 服务器一起工作的方法,但是我终其一生都无法弄清楚。我找不到 ssh2_connect() 函数。如果我去 /etc/php/... 我可以看到 ssh2.ini 文件存在。但是我相信活动的 php 实例位于 /usr/local/lsws/lsphp74/7.4/etc/php/ 我没有看到 ss2.ini 的位置。有没有办法将 ssh2 安装在服务器正在使用的目录中?如果我 运行 ssh2_connect 在命令提示符下,它工作得很好,因为它很可能使用 php.
的 /etc/php 实例
你说得对,ssh2_connect()
是由 pecl 扩展提供的。这些是 php 的可选二进制 add-ons。我会快速创建一个 phpinfo();
页面并将其添加到 litespeed 服务器,这样您就可以看到哪些模块处于活动状态以及 php 使用的配置文件实际位于磁盘上的位置。
安装指南可以引导您安装此 pecl 扩展。
https://www.php.net/manual/en/ssh2.requirements.php
实现此目的的另一种方法是使用不依赖于特殊 plug-ins 的 pure-php 库。 phpseclib 在纯 php 中完全实现了 ssh 协议,利用库(如果它们存在但没有它们也能运行)。
因为你没有提到你的服务器环境到底是什么
我假设它是 OpenLiteSpeed 图像或 CyberPanel 图像
首先,编译libssh2
wget https://libssh2.org/download/libssh2-1.10.0.tar.gz
tar vxzf libssh2-1.10.0.tar.gz
cd libssh2-1.10.0
./configure
make
make install
然后编译PHP扩展
mkdir /usr/local/lsws/lsphp74/tmp
pecl channel-update pecl.php.net
/usr/local/lsws/lsphp74/bin/pear config-set temp_dir "/usr/local/lsws/lsphp74/tmp"
/usr/local/lsws/lsphp74/bin/pecl install https://pecl.php.net/get/ssh2-1.3.1.tgz
echo "extension=ssh2.so" > /usr/local/lsws/lsphp74/etc/php/7.4/mods-available/50-ssh2.ini
最后,重启 lsphp 进程以加载新模块
touch /usr/local/lsws/admin/tmp/.lsphp_restart.txt
或
killall lsphp
然后通过 phpinfo();
验证以确保您看到 ssh2 已加载
所以我构建了一个 class,它使用 php 中的 ssh2 包。我已经在 apache2 服务器上成功设置并使用和测试了这个 class。 运行ning 所在的工作服务器是 litespeed 的一个实例。我已经在网上搜索了一种让 ssh2 与这个 litespeed 服务器一起工作的方法,但是我终其一生都无法弄清楚。我找不到 ssh2_connect() 函数。如果我去 /etc/php/... 我可以看到 ssh2.ini 文件存在。但是我相信活动的 php 实例位于 /usr/local/lsws/lsphp74/7.4/etc/php/ 我没有看到 ss2.ini 的位置。有没有办法将 ssh2 安装在服务器正在使用的目录中?如果我 运行 ssh2_connect 在命令提示符下,它工作得很好,因为它很可能使用 php.
的 /etc/php 实例你说得对,ssh2_connect()
是由 pecl 扩展提供的。这些是 php 的可选二进制 add-ons。我会快速创建一个 phpinfo();
页面并将其添加到 litespeed 服务器,这样您就可以看到哪些模块处于活动状态以及 php 使用的配置文件实际位于磁盘上的位置。
安装指南可以引导您安装此 pecl 扩展。 https://www.php.net/manual/en/ssh2.requirements.php
实现此目的的另一种方法是使用不依赖于特殊 plug-ins 的 pure-php 库。 phpseclib 在纯 php 中完全实现了 ssh 协议,利用库(如果它们存在但没有它们也能运行)。
因为你没有提到你的服务器环境到底是什么
我假设它是 OpenLiteSpeed 图像或 CyberPanel 图像
首先,编译libssh2
wget https://libssh2.org/download/libssh2-1.10.0.tar.gz
tar vxzf libssh2-1.10.0.tar.gz
cd libssh2-1.10.0
./configure
make
make install
然后编译PHP扩展
mkdir /usr/local/lsws/lsphp74/tmp
pecl channel-update pecl.php.net
/usr/local/lsws/lsphp74/bin/pear config-set temp_dir "/usr/local/lsws/lsphp74/tmp"
/usr/local/lsws/lsphp74/bin/pecl install https://pecl.php.net/get/ssh2-1.3.1.tgz
echo "extension=ssh2.so" > /usr/local/lsws/lsphp74/etc/php/7.4/mods-available/50-ssh2.ini
最后,重启 lsphp 进程以加载新模块
touch /usr/local/lsws/admin/tmp/.lsphp_restart.txt
或
killall lsphp
然后通过 phpinfo();
验证以确保您看到 ssh2 已加载