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

Posted

技术标签:

【中文标题】为 PHP 安装 SSH2 以在 OSX 10.9.1 上的 Xampp Apache 服务器上运行【英文标题】:Installing SSH2 for PHP to run on a Xampp Apache server on a OSX 10.9.1 【发布时间】:2014-01-11 05:41:15 【问题描述】:

我在装有 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 服务器,我不得不停止使用:

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

已安装 Homebrew(否则“pecl install”命令会失败):

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

跑:

brew 安装自动配置

现在我终于可以跑步了:

$ 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 存档,并且:

./配置

制作

进行安装

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

php化

./configure --with-ssh2

制作

进行安装

又得到了一个ssh2.so文件,添加到相关的php.ini中,重启服务器还是不行。

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

【问题讨论】:

【参考方案1】:

你考虑过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');
?>

【讨论】:

我听说过这个其他选项,我会在做任何更激进的事情之前尝试一下。我正在考虑的其他事情是将 Xampp 换成其他东西,或者只是在 Windows 或 Ubuntu 上进行项目,尽管无法在流行的操作系统上安装我在项目中使用的库将是一件坏事。现在,我将继续尝试让 ssh2 正常工作,以免留下未回答的问题。

以上是关于为 PHP 安装 SSH2 以在 OSX 10.9.1 上的 Xampp Apache 服务器上运行的主要内容,如果未能解决你的问题,请参考以下文章

在 OSx 10.9 Mavericks 上安装 Cantera 2.1

如何使用 rvm 在 OS_X 10.9 上安装 ruby​​ 2.1.0? (没有可用的二进制红宝石:osx/10.9/x86_64/ruby)

OSX 应用程序的向后兼容性

OSX 10.9 - Mavericks webdav 客户端锁定问题

OSX 10.9 Mavericks 钥匙串 API 坏了?

PHP7.3.5安装ssh2扩展