我在Mac上用OSX10.9.1运行Xampp,并试图开发一个通过AJAX调用调用PHP脚本的网页。xampp在这里用于开发目的,并不打算形成在线页面的后端。
php脚本需要通过ssh连接到远程机器,原因是
计划使用ssh2库。当我尝试运行命令时:
$connection=ssh2_connect('my.remote.machine.address',5432);
我得到以下错误:
致命错误:在第8行调用/applications/xampp/xamppfiles/htdocs/project/getdata.php中未定义的函数ssh2\u 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/):
我的电脑上已经有了一些东西:xcode(来自istore)、macports(来自他们网站的安装程序)、php 5.4.17,显然还有一个带有osx的apache服务器,我不得不停止使用:
Sudo ApacheCtl停止
所以xampp一号成功了。
运行命令:
sudo端口安装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-fsslhttps://raw.github.com/mxcl/homebrew/go/install)”
跑:
brew安装autoconf
现在我终于可以跑了:
$sudo pecl安装ssh2-0.12
以“/opt/local”作为前缀
现在我得到了一个不错的ssh2.so文件,我将它添加到相关的php.ini中:
/应用程序/xampp/xamppfiles/etc
通过添加行:
扩展名=/opt/local/lib/php54/extensions/no-debug-non-zts-20100525/ssh2.so
从xampp附带的gui重新启动xamppacheweb服务器,但仍然找不到ssh2。
二。从终端方法编译ssh2.so(参考:zizifu的注释http://www.php.net/manual/en/ssh2.installation.php):
从http://libssh2.org/获取libssh2存档,并:
/配置
制作
制作安装
从http://pecl.php.net/package/ssh2获得最新的ssh2存档
磷酸化
./configure—使用-ssh2
制作
制作安装
再次得到一个ssh2.so文件,将其添加到相关的php.ini中,重新启动服务器,但仍然无法工作。
很抱歉,如果这有太多的细节,希望我提供的信息能指出我做错了什么;我非常感谢任何解决方案/提示/事情来尝试解决这个问题。
最佳答案
你考虑过吗?它有许多phpseclib, a pure PHP SSH2 implementation,包括改进的便携性和速度。例子:
<?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');
?>
关于php - 安装SSH2 for PHP以在OSX 10.9.1的Xampp Apache服务器上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20736170/