我正在尝试从我的 /dev 文件夹访问 UART 设备来控制机器人。我正在尝试使用 cgi python 脚本从 Internet 执行此操作。当我在命令行上执行代码时,代码工作正常,但是当它通过服务器执行时,我收到 500 错误。我很确定这是某种权限问题,但我不知道如何解决。如果有人知道这里发生了什么或我如何解决它,我们将不胜感激。
如果有人愿意,我可以发布我的 python 代码,但我认为问题不在于代码,而在于代码的执行。
提前致谢,
迈克尔,
也许你的独奏可以检查设备文件组:
adam@sabayon ~ $ ls -lash /dev/ttyS*
0 crw-rw---- 1 root uucp 4, 64 03-10 13:20 /dev/ttyS0
0 crw-rw---- 1 root uucp 4, 65 03-10 13:20 /dev/ttyS1
0 crw-rw---- 1 root uucp 4, 66 03-10 13:20 /dev/ttyS2
0 crw-rw---- 1 root uucp 4, 67 03-10 13:20 /dev/ttyS3
对我来说是uucp。并将启动您的 cgi 脚本的用户添加到该组(对于我的系统 uucp)。但是您必须记住,由该用户启动的所有其他 cgi 脚本也将被允许访问 UART。
编辑:
对于 apache webserver,看起来suEXEC可以为您提供解决方案。
suEXEC 功能使 Apache 用户能够在不同于调用 Web 服务器的用户 ID 的用户 ID 下运行 CGI 和 SSI 程序。通常,当 CGI 或 SSI 程序执行时,它以运行 Web 服务器的同一用户身份运行。
所以看起来你可以为你的 cgi 脚本创建新用户并正确配置它,而不是通过 apache 将它与你的脚本一起使用。
这是 suEXEC 的文档: http ://httpd.apache.org/docs/2.0/suexec.html
我从未使用过它,但我希望它会有所帮助。