我在运行OS X 10.9.1的Mac上运行Xampp,我正在尝试开发一个通过Ajax调用调用PHP脚本的网页。 Xampp在此用于开发目的,并不打算构成在线页面的后端。
PHP脚本需要通过ssh连接到远程机器,原因我是 计划使用ssh2库。当我尝试运行命令时:
$ connection = ssh2_connect('my.remote.machine.address',5432);
我收到以下错误:
致命错误:在第8行的/Applications/XAMPP/xamppfiles/htdocs/Project/getdata.php中调用未定义的函数ssh2_connect()
并且,通过调用'phpinfo()',似乎没有安装ssh2。我成功地在Windows,Ubuntu和Scientific Linux上使用了ssh2_connect,一周之后我似乎无法弄清楚我在OSX上做得不对,我怀疑可能存在路径损坏或与Apache交互的问题服务器OSX随附。这是我尝试过的:
予。 MacPorts和PECL方法(参考:http://lassebunk.dk/2011/05/26/installing-ssh2-for-php-on-mac-os-x/):
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
ruby -e“$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)”
brew install autoconf
$ sudo pecl install ssh2-0.12
以“/ opt / local”作为前缀
/应用/ XAMPP / xamppfiles /等
添加以下行:
延长= /选择/本地/ LIB / php54 /扩展/无调试非ZTS-20100525 / ssh2.so
II。从终端方法编译ssh2.so(参考:zizifu的评论http://www.php.net/manual/en/ssh2.installation.php):
./配置
请
make install
phpize
./ configure --with-ssh2
请
make install
很抱歉,如果这有太多细节,希望我提供的信息可以指出我做错了什么;我真的很感激任何解决方案/提示/事情来尝试解决这个问题。
答案 0 :(得分:4)
您考虑过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');
?>