我正在尝试在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_functions
和safe_mode_exec_dir
)。
并尝试使用FULL
路径到您的putty.exe文件。Webserver工作在另一个目录,而不是你的bat文件