我正在尝试安装它 http://fr2.php.net/manual/en/book.ssh2.php 在Centos 5(RHEL 5的一个分支)上。
我安装了位于/ usr / lib中的libssh2(yum install libssh2),当我安装SSH2扩展(通过pecl install -f ssh2)时,我收到此消息
检查默认路径中的ssh2文件...找不到 configure:error:找不到所需的libssh2库。您可以从http://sourceforge.net/projects/libssh2/获取该套餐 错误:`/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2 = / usr'失败
如果我设置/ usr / lib,我会得到相同的消息
错误:`/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2 = / usr / lib'失败
问题出在哪里?
答案 0 :(得分:23)
从http://sourceforge.net/projects/libssh2/通过tar.gz安装libssh2帮助很多(--with-ssh2 = / usr / local / include /)。
但是“yum install libssh2-devel”是一个更好的主意。
答案 1 :(得分:8)
$ 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
答案 2 :(得分:2)
yum install libssh2-devel
对我不起作用:
没有包libssh2-devel可用。
所以我从rpmfind下载了rpm包并安装了rpm -ivh
之后刚刚将extension=ssh2.so
添加到/etc/php.d/ssh2.ini
答案 3 :(得分:1)
我在Centos上运行,这些答案都不是我的整个解决方案。我跟着these instructions:
$ 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
答案 4 :(得分:0)
我遇到了这个问题:
我在Pair.com“高级”托管帐户上,所以我对我允许做的事情有点限制。我认为我不能yum
也不能aptitude
或其他任何预先编译的软件包。
我已经下载并编译了libssh2。在pecl
进程中,它会询问库的位置。它位于“〜/ usr / local / lib”中,我尝试了几种变体,包括完全合格。但我一直得到同样的错误。
错误消息没有准确说明它正在寻找哪个文件。 libssh2.so在该目录中。我知道输出应该是ssh2.so.我想知道是否应该有ss2.something或libssh.nothing?
我这样修好了。在我的例子中,在编译libssh2后我下载了PEAR tarball。诀窍是:
./configure --with-ssh2=<libssh2 location> --prefix=<libssh2 location>
另一个诀窍是,由于Pair.com正在运行FreeBSD,我必须做一个“cd”。在./configure命令之后。否则,make会产生“权限被拒绝”错误。显然,这对于所有* nix BSD风格都是必要的。
答案 5 :(得分:0)
因此,此更新是在{strong> PHP 7.x 的有效解决方案下,从@klay更新answer到@avn的修改。
$ 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版本匹配。
答案 6 :(得分:0)
错误:
checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.
...可以在the source code中看到。
代码中的逻辑表明,如果在 /include/libssh2.h
、/usr/local
或可选的 /usr
提供的路径中找不到 --with-ssh2=[DIR]
,它将抛出此错误指示。换句话说,在不自定义指令的情况下,它需要找到以下其中一项:
/usr/local/include/libssh2.h
/usr/include/libssh2.h
如果它通过此检查,则假定它可以在 lib
或 /usr/local/lib
处找到 libssh2 /usr/lib
。
希望以上信息足以帮助人们调试问题。我自己的情况是相当具体和不寻常的(macOS 在自定义安装路径中带有 Homebrew),但如果它对其他人有帮助,这里是我可怕的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