首先,PHP远不是我的强项,但我决心要学习。我可能没有为第一个PHP项目分配最简单的任务,所以在我尝试解释时请耐心等待。我想在一个简单的表单中输入一个服务器名称,点击提交,然后在下面发生以下内容:
不是在一个块中解决所有问题,而是(对我而言)将其分解并从小开始是有道理的:
<?php
$conn = ssh2_connect('10.x.x.x', 22);
ssh2_auth_password($conn, 'user', 'password');
ssh2_scp_send($conn, '/path/to/script', '/path/to/script', 0700);
$stream = ssh2_exec($conn, '/path/to/script');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
?>
# php –f name-of-script.php
这在命令行中运行良好,并返回了预期的响应。
我想扩展它并在浏览器中具有相同的功能,因此我创建了一个简单的表单,如下所示:
<form action="name-of-script.php" method="POST">
Server Name: <input type="text" name="node" size="20">
<input type="submit" value="Submit">
</form>
然后稍微修改了我的代码:
<?php
$node = $_POST["node"];
$conn = ssh2_connect($node, 22);
ssh2_auth_password($conn, 'user', 'password');
ssh2_scp_send($conn, '/path/to/script', '/path/to/script', 0700);
$stream = ssh2_exec($conn, '/path/to/script');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
?>
我是否因为期望所有SSH2函数与浏览器中的命令行产生相同的结果而犯了一个根本性的错误?输入服务器名称并单击“提交”后,我现在看到的只是一个空白页。
答案 0 :(得分:0)
我这是一个完整的男生错误!我处理的文件是后缀.html而不是.php!一旦我重命名了文件,一切都很顺利。
工作代码:
$conn = ssh2_connect('10.x.x.x', 22);
ssh2_auth_password($conn, 'user', 'password');
ssh2_scp_send($conn, '/path/to/script', '/path/to/script', 0700);
$stream = ssh2_exec($conn, '/path/to/script');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);