我正试图在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
我的引号是否在第一个代码片段中转义?
您关于正确引用的问题很难回答,因为您无法创建易于调试的东西。请考虑以下代码:
$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在。。。
这将使您的第一个命令失败,因为当时没有这样的路径/文件。这很可能是你的问题。
小心。
原来问题就在这一行的末尾。我把它改成:
ssh2_exec($con, 'sed -i 's/max-players=4/max-players=8/g' ' . $filedir . '/server.properties')
而且效果很好。我必须在/server.properties'
之前取出'