PHP在使用SFTP时提示 Call to undefined function ssh2_connect() , 出现该提示说明服务器未安装ssh2。
系统:CentOS 6.x
PHP版本:4.5.4
需要安装的环境:libssh2、ssh2,ssh2依赖于libssh2,所以需要先安装libssh2。在安装时需要根据PHP版本确定ssh2版本,然后再根据ssh2版本的要求确定libssh2的版本。
一、安装libssh2
wget --no-check-certificate https://www.libssh2.org/download/libssh2-1.2.tar.gz
tar -zxvf libssh2-1.2.tar.gz
cd libssh2-1.2
# 配置安装路径,这里的安装路径需要和ssh2设置的依赖路径一致
./configure --prefix=/usr/local/lib/libssh2
# 编译&安装
make && make install
二、安装ssh2
1、ssh2版本需要和PHP的版本匹配,PECL上ssh2包的描述是:PHP5 需要安装ssh2-0.13,ssh2 1.0或者更高版本只支持PHP 7。PECL ssh2 详情请点击此处
2、ssh2需要和libssh2的版本适配,ssh2 0.12对libssh2的版本要求是最低1.2。详情点击此处
wget http://pecl.php.net/get/ssh2-0.12.tgz
tar -xvf ssh2-0.12.tgz
cd ssh2-0.12
phpize
# --with-ssh2设置为上面libssh2的安装路径
# --with-php-config设置为php-config的路径
./configure --prefix=/usr/local/lib/ssh2 --with-ssh2=/usr/local/lib/libssh2 --with-php-config=/usr/local/bin/php-config
make && make install
# 找到php.ini位置并添加扩展,我php.ini的位置为:/usr/local/lib/php.ini
vim /usr/local/lib/php.ini
# 在php.ini添加内容
extension=ssh2.so