3

我在装有 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/):

  • 我的电脑上已经有东西了:xcode(来自 iStore)、MacPorts(来自他们网站的安装程序)、PHP 5.4.17 以及显然是 OSX 附带的 Apache 服务器,我不得不停止:

须藤 apachectl 停止

这样 Xampp 就可以工作了。

  • 运行命令:

须藤端口安装 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

  • 安装 Homebrew(否则 'pecl install' 命令失败):

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install )"

  • 跑了:

冲泡安装自动配置

  • 现在我终于可以运行了:

$ sudo pecl 安装 ssh2-0.12

以“/opt/local”为前缀

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

/应用程序/XAMPP/xamppfiles/等

通过添加以下行:

扩展=/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):

。/配置

制作

进行安装

php化

./configure --with-ssh2

制作

进行安装

  • 再次得到一个 ssh2.so 文件,将其添加到相关的 php.ini 中,重新启动服务器,它仍然无法正常工作。

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

4

1 回答 1

4

您是否考虑过 phpseclib,一个纯 PHP SSH2 实现?与 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');
?>
于 2013-12-23T14:56:59.033 回答