编程语言
首页 > 编程语言> > 安装SSH2 for PHP以在OSX 10.9.1的Xampp Apache服务器上运行

安装SSH2 for PHP以在OSX 10.9.1的Xampp Apache服务器上运行

作者:互联网

我在装有OS X 10.9.1的Mac上运行Xampp,并且试图开发一个通过Ajax调用来调用PHP脚本的网页. Xampp在这里用于开发目的,并不旨在构成在线页面的后端.

PHP脚本需要通过ssh连接到远程计算机,这是我这样做的原因
计划使用ssh2库.当我尝试运行命令时:

$connection = ssh2_connect(‘my.remote.machine.address’, 5432);

我收到以下错误:

Fatal error: Call to undefined function ssh2_connect() in /Applications/XAMPP/xamppfiles/htdocs/Project/getdata.php on line 8

并且,通过调用“ phpinfo()”,似乎未安装ssh2.我成功地在Windows,Ubuntu和Scientific Linux上成功使用了ssh2_connect,一周后我似乎无法弄清楚我在OSX上做的不正确,我怀疑路径断开或与Apache交互可能存在问题服务器OSX附带了.这是我尝试过的:

I. MacPorts和PECL方法(参考:http://lassebunk.dk/2011/05/26/installing-ssh2-for-php-on-mac-os-x/):

>我的计算机上已经存在的东西:xcode(来自iStore),MacPorts(来自其站点的安装程序),PHP 5.4.17以及显然是OSX附带的Apache服务器,我必须停止使用:

sudo apachectl stop

这样Xampp就可以了.

>运行命令:

sudo port install libssh2

因为libssh2和openssl库是在php中使用ssh2_connect的先决条件(参考:http://www.php.net/manual/en/ssh2.requirements.php);根据phpinfo(),openssl似乎已经安装在Xampp上.

>已装梨:

sudo php /usr/lib/php/install-pear-nozlib.phar

>已安装的自制软件(否则“ pecl install”命令失败):

ruby -e “$(curl -fsSL 07002)”

>运行:

brew install autoconf

>现在我终于可以运行:

$sudo pecl install ssh2-0.12

以“ / opt / local”作为前缀

>现在,我得到了一个不错的ssh2.so文件,将其添加到相关的php.ini中:

/Applications/XAMPP/xamppfiles/etc

通过添加以下行:

extension=/opt/local/lib/php54/extensions/no-debug-non-zts-20100525/ssh2.so

>从Xampp随附的GUI重新启动Xampp Apache Web服务器,但仍未找到ssh2.

二.从终端方法编译ssh2.so(参考:zizifu的注释http://www.php.net/manual/en/ssh2.installation.php):

>从http://libssh2.org/获得了libssh2归档文件,并且:

./configure

make

make install

>从http://pecl.php.net/package/ssh2获得了最新的ssh2存档

phpize

./configure –with-ssh2

make

make install

>再次获取了ssh2.so文件,将其添加到相关的php.ini中,重新启动了服务器,但仍然无法正常工作.

很抱歉,如果这个细节太多,希望我提供的信息可以指出我做错了什么.我非常感谢尝试解决此问题的任何解决方案/提示/事物.

解决方法:

您是否考虑过phpseclib, a pure PHP SSH2 implementation?它的数量为advantages over libssh2,包括改进的可移植性和速度.例:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

标签:libssh2,xampp,apache,php,macos
来源: https://codeday.me/bug/20191030/1964895.html