我在装有 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):
- 从http://libssh2.org/获取 libssh2 存档,并且:
。/配置
制作
进行安装
php化
./configure --with-ssh2
制作
进行安装
- 再次得到一个 ssh2.so 文件,将其添加到相关的 php.ini 中,重新启动服务器,它仍然无法正常工作。
抱歉,如果这有太多细节,希望我提供的信息可以指出我做错了什么;我非常感谢任何尝试解决此问题的解决方案/提示/事物。