PHP中的PuTTy命令不起作用,重新启动树莓派的web服务


PuTTy command in PHP doesn't work, web service to restart Raspberry Pi

我正在尝试在PHP中做简单的web服务(我使用Laravel)来重启和关闭我的树莓派。

我尝试在我的PHP服务中调用这样的东西:

exec("putty -ssh pi@192.168.0.12 -pw myPassword -m D:'workspace'CPS'public'ssh'restart.txt");

在我的restart.txt我有简单的命令sudo shutdown -r now

但是当我在高级Rest客户端应用程序(Chrome插件)中调用我的web服务时,我的请求正在处理并且永远不会结束。在命令行中可以正常工作。

我认为问题是直接在PHP中运行PuTTy,我做了一些更改并创建.bat文件,内容如下:

echo off
putty -ssh pi@%1 -pw %2 -m %3

我这样开始这个批处理脚本:

exec("D:'workspace'CPS'public'ssh'restart.bat 192.168.0.12 myPassword D:'workspace'CPS'public'ssh'restart.txt");

…但结果是一样的。我将web服务更改为GET方法,并在浏览器中像页面一样调用服务,但没有任何更改。

我没有任何错误/异常在日志文件和控制台。我也检查了系统日志,但没有发现。

我做错了什么或错过了什么?这是可能的还是有更好的方法来实现这一点?

目前我在Windows 7和XAMPP上运行它。我将来会为Linux做第二个版本,并根据当前的环境决定我应该在代码中运行哪个命令。

我忘了写,所有需要的用户都有权限执行我的(…)/ssh目录

中的文件

尝试使用:

echo system("D:'workspace'CPS'public'ssh'restart.bat 192.168.0.12 myPassword D:'workspace'CPS'public'ssh'restart.txt");

获取输出。也许你会发现一些错误。

你需要检查你的php.ini文件中的safe_mode选项(如disable_functionssafe_mode_exec_dir)。

并尝试使用FULL路径到您的putty.exe文件。Webserver工作在另一个目录,而不是你的bat文件