0

我正在尝试在 php 中使用以下命令发送到我的服务器:

ssh2_exec($con,  'sed -i \'s/max-players=4/max-players=8/g\' ' . $filedir . '\'/server.properties')

但它什么也没做。另一方面,此命令:

ssh2_exec($con, 'sed -i \'s/max-players=4/max-players=12/g\' /home/servers2/\'' . $mUsername . '\'/server.properties')

工作得很好,我正在尝试将硬编码目录更改为数据库中的目录。所以

$filedir = $DIR . $mUsername;

$Dir在这种情况下是'/home/servers2/'并且$mUsername可以是Testing540

当我打印$filedir我得到的值时:

/home/servers2/Testing540

我的引号是否在第一个代码片段中转义?

4

2 回答 2

1

您关于正确引用的问题很难回答,因为您没有创建可以轻松调试的东西。请考虑以下代码:

$pattern = 'sed -i \'s/max-players=4/max-players=8/g\' %s\'/server.properties';
$command = sprintf($pattern, $filedir);
$result  = ssh2_exec($con,  $command);

然后您可以更轻松地验证您的实际命令,例如通过检查/输出/记录:$command

您还可以更轻松地比较这两种变体之间的区别。

$DIR还要启用错误报告和最高级别的日志记录,您可能只是遇到未定义变量的问题:

注意:未定义的变量:DIR in ...

这将使您的第一个命令失败,因为那时没有这样的路径/文件。这很可能是你的问题。

小心。

于 2012-12-23T17:06:25.240 回答
0

原来问题出在行尾。我将其更改为:

ssh2_exec($con,  'sed -i \'s/max-players=4/max-players=8/g\' ' . $filedir . '/server.properties')

而且效果很好。我必须先取出\'权利/server.properties'

于 2012-12-23T17:52:58.330 回答