【发布时间】:2013-02-05 23:22:46
【问题描述】:
我有一些代码想做成一个函数,因为我想在我的代码的不同部分和不同的页面上使用它,而且我不想到处都有代码。我正在使用 PHPseclib 库和类。独立工作的代码是:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SSH2.php');
$ssh = new Net_SSH2('$address');
if (!$ssh->login('$username', '$password')) {
exit('Login Failed');
}
$sPath = "minecraft/servers/";
$sSavingCode = "server.properties";
$motd = "test";
echo $ssh->exec("cat > $sPath$sSavingCode <<EOF
motd=".$motd."
EOF
");
我想把它变成一个函数,所以我尝试这样做:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); 包括('phpseclib/Net/SSH2.php');
$ssh = new Net_SSH2('$address');
if (!$ssh->login('$username', '$password')) {
exit('Login Failed');
}
function test($motd)
{
$sPath = "minecraft/servers/";
$sSavingCode = "server.properties";
$ssh->exec("cat > $sPath$sSavingCode <<EOF
motd=".$motd."
EOF
");
}
在函数之外和上面的其余代码。我正在尝试调用如下函数:
$motd = "Server";
test($motd);
但这会带来服务器错误。这个功能可以吗?还是应该在每次我想使用的时候把代码放在我需要的地方?
【问题讨论】:
-
返回的错误是什么?
-
HTTP 错误 500(内部服务器错误):服务器尝试完成请求时遇到了意外情况。
-
我认为这是一个未定义的错误,因为在你的函数中你没有定义的 $ssh 变量来调用 exec
-
尝试 $GLOBALS['ssh'].exec 或在你的测试函数 global $ssh 中定义一个本地副本;
-
问得好,因为我怀疑来自 JavaScript 的人期望 '$ssh' 可以从 test() 中自动访问。
标签: php function ssh phpseclib