我正在尝试在PHP中使用简单的Web服务(我使用Laravel)重新启动并关闭我的覆盆子pi。
我尝试过我的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
但是当我在高级休息客户端应用程序(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 目录中执行文件
答案 0 :(得分:0)
尝试使用:
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文件。 Web服务器工作在另一个目录中,而不是您的bat文件。