14

我正在尝试 在 Centos 5(RHEL 5 的一个分支)上安装这个http://fr2.php.net/manual/en/book.ssh2.php 。

我安装了位于 /usr/lib 中的 libssh2(yum install libssh2),当我安装 SSH2 扩展(通过 pecl install -f ssh2)时,我收到了这条消息

检查默认路径中的 ssh2 文件...未找到配置:错误:未找到所需的 libssh2 库。您可以从http://sourceforge.net/projects/libssh2/获取该软件包 错误:`/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2=/usr' failed

如果我设置 /usr/lib,我会收到相同的消息

错误:`/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2=/usr/lib' 失败

哪里有问题?

4

7 回答 7

22

从http://sourceforge.net/projects/libssh2/通过 tar.gz 安装 libssh2有很大帮助(--with-ssh2=/usr/local/include/)。

但是“yum install libssh2-devel”是一个更好的主意。

于 2009-02-18T13:54:13.217 回答
11
$ sudo pecl channel-update pecl.php.net
$ sudo apt-get install libssh2-1-dev
$ sudo pecl install -a ssh2-0.12
$ echo 'extension=ssh2.so' | sudo tee /etc/php5/mods-available/ssh2.ini > /dev/null
$ sudo php5enmod ssh2
于 2015-10-28T01:34:17.377 回答
2

yum install libssh2-devel对我不起作用:

没有可用的软件包 libssh2-devel。

所以我从rpmfind下载了 rpm 包并安装了rpm -ivh

之后只是添加extension=ssh2.so/etc/php.d/ssh2.ini

于 2016-01-08T14:51:25.143 回答
2

这是来自@klay 的更新答案+来自@avn 的修改来自PHP 7.x工作解决方案下的评论。

$ sudo pecl channel-update pecl.php.net
$ sudo apt-get install libssh2-1-dev
$ sudo pecl install -a ssh2-1.0
$ echo 'extension=ssh2.so' | sudo tee /etc/php/7.2/mods-available/ssh2.ini > /dev/null
$ sudo phpenmod ssh2

关于线路:

echo 'extension=ssh2.so' | sudo tee /etc/php/7.2/mods-available/ssh2.ini > /dev/null

确保路径/etc/php/7.2/mods-available有效并且与您的 php 版本匹配。

于 2018-10-15T13:38:09.337 回答
1

我在 Centos 上运行,这些答案都不是我的完整解决方案。我按照以下说明进行操作:

$ sudo yum install -y gcc php-devel php-pear libssh2 libssh2-devel

php-devel不会安装,抱怨冲突。我搜索了 yum 以找到我可用的 php 开发包

$> yum search php|grep devel
...
php55u-devel.x86_64 : Files needed for building PHP extensions
php56u-devel.x86_64 : Files needed for building PHP extensions
php70u-devel.x86_64 : Files needed for building PHP extensions
...

所以我跑了

$> sudo yum install -y php56u-devel

它安装干净。然后,继续按照说明,我跑了

$ pecl install -f ssh2

它编译。然后我将扩展名添加到 php

$ touch /etc/php.d/ssh2.ini
$ echo extension=ssh2.so > /etc/php.d/ssh2.ini

在我的系统上,而不是

$ /etc/init.d/httpd restart

我必须做

$ sudo /bin/systemctl restart  php-fpm.service 

这就是安装的所有步骤。最后确认:

$> php -m|grep ssh2
ssh2
于 2016-08-04T15:25:42.530 回答
0

我有这个问题:

我使用的是 Pair.com“高级”托管帐户,所以我可以做的事情有点限制。我认为我不能yum,也aptitude不能使用任何其他预编译包。

我已经下载并编译了 libssh2。在此pecl过程中,它会询问图书馆的位置。它在“~/usr/local/lib”中,我尝试了几种变体,包括完全限定的。但我一直收到同样的错误。

错误消息没有准确说明它要查找的文件。libssh2.so 在该目录中。我知道输出应该是 ssh2.so。我想知道是否应该有 ss2.something 或 libssh.nothing?

我就这样修好了。就我而言,在编译 libssh2 之后,我下载了 PEAR 压缩包。诀窍是:

./configure --with-ssh2=<libssh2 location> --prefix=<libssh2 location>

另一个技巧是,由于 Pair.com 正在运行 FreeBSD,我必须执行“cd”。在 ./configure 命令之后。否则,make 会产生“Permission denied”错误。显然,这对于所有 *nix BSD 风格都是必需的。

于 2010-06-18T17:51:51.163 回答
0

错误:

checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.

...可以在源代码中看到。

/include/libssh2.h代码中的逻辑表明,如果它在任何一个中找不到/usr/local/usr或者在可选 --with-ssh2=[DIR]指令提供的路径中都找不到,它将引发此错误。换句话说,在不自定义指令的情况下,它需要找到以下之一:

/usr/local/include/libssh2.h
/usr/include/libssh2.h

如果它通过了这个检查,那么它就假设它可以lib/usr/local/libor找到 libssh2 /usr/lib

希望以上信息足以帮助某人调试他们的问题。我自己的案例是相当具体和不寻常的(在自定义安装路径中使用 Homebrew 的 macOS),但如果它对其他人有帮助,这是我可怕的 hacky 解决方法。完美运行哈哈

简而言之,我正在创建两个临时符号链接,以便 pecl 可以在它期望的位置找到 ssh2。

# First check that neither /usr/local/include nor /usr/local/lib exists

sudo ln -s /usr/local/CustomInstallPath/Homebrew/Cellar/libssh2/1.9.0_1/include /usr/local/include
sudo ln -s /usr/local/CustomInstallPath/Homebrew/Cellar/libssh2/1.9.0_1/lib /usr/local/lib
pecl install -a ssh2-1.3.1
sudo rm -rf /usr/local/include
sudo rm -rf /usr/local/lib
于 2021-06-26T01:51:24.857 回答