PHP Conference Japan 2024

SSH2 函数

目录

添加注释

用户贡献的注释 8 个注释

dan at novapulsar dot com
17 年前
除非您在真实文件之后发送一个虚拟文件,否则使用 ssh2_scp_send 传输任何文件都会出现问题,或者最好发出

ssh2_exec ($connection, 'exit');

我在我的原型中跨多个服务器传输了数十万个文件,并注意到每个文件的 md5 哈希值和字节长度都不匹配。

经过一番研究,我了解到这是一个错误,并按照 pecl.php.net 错误部分中的建议添加了上面的代码。

希望这可以帮助那些文件传输不完整而可能毁掉整个应用程序的人。
astribuncio at gmail dot com
18 年前
在 HPUX 11.11 上安装的教程

只需按照手册页上的安装说明进行操作,并解决出现的问题

- 制作 libssh2 时
与 /lib/pa20_64 和 32 位链接中的 64 位库相关的问题
编辑配置文件并更改
SHLIB_LDFLAGS="-b +vnocompatwarnings -L/lib/pa20_64"

SHLIB_LDFLAGS="-b +vnocompatwarnings -L/lib"

- 执行 phpize 时
与 aclocal、autom4ke 和 m4 相关的问题
安装了 automake、autoconf 和 m4

- 配置 ssh2 时
配置:错误:找不到 libssh2 版本 >= 0.4
编辑了 configure.m4 文件,并从该行中删除了 -ldl 开关(如前所述)
39 -L$SSH2_DIR/lib -lm -ldl
再次运行 phpize 以及 ./configure --with-ssh2
shred
7 年前
遇到奇怪的“无法打开 ssh2.sftp://Resource id #3/example.txt”错误?这是 PHP > 5.6.27 中的一个错误。使用 intval() 作为解决方法,使 ssh2 再次工作

$sftp = ssh2_sftp($connection);
fopen("ssh2.sftp://" . intval($sftp) . "/example.txt", 'r');

https://bugs.php.net/bug.php?id=73597
chris dot britton at cingular dot com
18 年前
我在 sparc64 架构的 OpenBSD 3.9 上构建 ssh2 扩展 (0.10) 时,运行 configure 时遇到此错误

checking for libssh2_banner_set in -lssh2... no
configure: error: libssh2 version >= 0.4 not found

我在 configure 文件中进行了一些探查,并追溯到了问题所在。失败的原因是 configure 尝试使用 -ldl 编译测试程序。libdl 未安装在 OpenBSD 3.9 上。OpenBSD 的开发者们多年前就清除了 libdl,我找不到包含它的软件包。

(上面的错误消息具有误导性,因为问题不在于 libssh2。)

我查看了 ssh2 扩展代码,没有发现使用 libdl 的理由,所以我从 config.m4 文件中删除了 -ldl。重新运行 phpize 和 configure。没有错误。执行了 make 并安装了 ssh2.so。工作正常。
Mike <esnik8202 at sneakemail dot com>
18 年前
列出目录内容

<?php
$connection
= ssh2_connect(\"hostname\", 22);
ssh2_auth_password(
$connection,\"username\", \"password\"); // 或使用任何 ssh2_auth_* 方法
$sftp = ssh2_sftp($connection);

$dh = opendir(\"ssh2.sftp://$sftp/path/to/dir/\");

while ((
$file = readdir($dh)) !== false) {
echo \"
$file is in hostname:/path/to/dir\\n\";
}

closedir(
$dh);
?>

(感谢 Sara 的帮助)
dotwho at NSPM dot mac dot com
19 年前
尝试为 Mac OS X (10.4.2) 编译此 ssh PECL 扩展?
使用 entropy.ch 的 php5 发行版?继续阅读:第一部分
1) 下载 libssh(我使用的是 0.11 版本)
http://sourceforge.net/project/showfiles.php?group_id=125852
2) 解压缩目录并在终端中 cd 到解压后的目录。
3) 运行:./configure; make all install;
libssh 应该编译并将输出文件放在 src/*.o 中
4) 将 libssh2 目录中 include 文件夹下的所有头文件复制到
/usr/local/include/
5) 将 libssh2 目录中 src 文件夹下的所有已编译文件 (*.o) 复制到
/usr/local/lib/
6) 下载 ssh2
(我使用了 0.9 版本,并进行了 cvs 中的额外更改 - 如下所述)
http://pecl.php.net/package/ssh2
7) 解压缩下载的存档。
8) 0.9 版本与某些 ZEND 头文件中使用的现有符号冲突...
cvs 中提供了一个更改,它重命名了 ssh2 中的符号以避免冲突
http://cvs.php.net/diff.php/pecl/ssh2/ssh2.c?r1=1.9&r2=1.10&ty=h
至少下载 1.10 版本的 ssh2.c
如果您决定下载较新版本,请下载任何相应的相关文件,
例如 php_ssh2.h 头文件。
9) 将旧版本的 ssh2.c 替换为新版本的 ssh2.c
(以及您下载的任何其他文件)。
10) 从终端
cd 到源代码目录(对我来说是 ssh2-0.9/ssh2-0.9/)。

(在第二部分评论中继续)
dotwho at NSPM dot mac dot com
19 年前
尝试为 Mac OS X (10.4.2) 编译此 ssh PECL 扩展?
使用 entropy.ch 的 php5 发行版?继续阅读:第二部分

11) 通过 SHELL$ "echo $PATH" 检查 shell 的路径变量。
如果您的 php5 二进制目录未在标准 OS X 二进制目录之前列出,
请更新您的 $PATH 变量以将其列在最前面。我的是
/usr/local/mysql/bin/: /usr/local/php5/bin/: /bin:/sbin: /usr/bin:/usr/sbin
11a) 如果您不执行此步骤,则 PECL 扩展将链接到 Mac OS X 附带的旧
php4 版本。您将通过下一步列出的服务器 API 与 phpinfo() 的输出不同这一事实了解到这一点

我的版本是 20041030,Apple 的版本是 20020429。
12) 运行:phpize && ./configure --with-ssh2 && make
这将产生大量输出,并且可能还会有一些警告。如果最后出现一条消息
说“构建完成”,则该过程已完成
(可能成功)。该命令已在
ssh2-0.9(或任何版本)目录中生成了输出文件 ssh2.so。
13) 通过运行以下命令检查扩展目录所在的位置
SHELL$/usr/local/php5/bin/php-config --extension-dir
如果它列出了实际存在的某个目录,请将 ssh2.so 文件复制到此目录。
如果它没有列出存在的位置,您可以创建该位置,或者
选择其他位置并更新 php.ini 文件中的行
extension_dir = "./"
以指向您要使用的目录。我选择了
extension_dir = "/usr/local/php5/extensions/"?>
14) 添加以下行
extension=ssh2.so
到 php.ini 文件的“动态扩展”区域。
15) 重新启动您的 Web 服务器以加载扩展。如果有任何问题,它们将被写入 Web 服务器日志。
16) 通过运行以下命令检查您的新 ssh 流是否可用
SHELL$ /usr/local/php5/bin/php -r "print_r(stream_get_wrappers());"
您应该会得到类似于以下输出的内容
数组
(
[0] => php
[1] => file
[2] => http
[3] => ftp
[4] => compress.bzip2
[5] => compress.zlib
[6] => https
[7] => ftps
[8] => ssh2.shell
[9] => ssh2.exec
[10] => ssh2.tunnel
[11] => ssh2.scp
[12] => ssh2.sftp
)
您现在应该能够使用 ssh 执行所有您需要做的很酷的事情
(如 sftp scp ssh 执行)!查看此处的一些评论以了解一些
示例脚本以进行测试
http://us2.php.net/manual/en/ref.ssh2.php

祝您好运...希望这能为您省去我的麻烦!:)
aeolianmeson at blitzeclipse dot com
17 年前
某些 PHP 5 安装可能无法将 SSH2 扩展作为 Windows 服务启动。它今天才开始发生在我身上,是自发的。我在 Apache 2.0.59 上使用 PHP 5.2.2(并尝试过 5.2.3)。

结果发现这是一个 Apache 问题。即使启动时收到错误消息,它仍然可以从 CLI 完美运行。因此,我再次在
INI 文件中将其注释掉,并从脚本中使用 extension_loaded('ssh2') 和 dl('php_ssh2.dll') 加载它。
To Top