我有一个python CGI脚本,它采用输入x
和y
(整数)形式,并使用subprocess
将其传递给C ++可执行文件,其中程序写入两者的总和值到文本文件。
代码在我的本地计算机上正常运行。但是,经过大量测试后,我发现无论何时我在我的服务器上运行此程序(在/var/www
中)并尝试编写该文件,都会发生某种错误,因为我收到了“内部服务器错误”页面。
服务器不是我的,所以我实际上没有sudo权限。但是从putty,我可以手动运行可执行文件,它确实写了文件。
我的猜测是我必须以某种方式运行python脚本中的可执行文件,但我不确定。我很感激任何建议!
编辑:
@gnibbler:有趣的是,我能够将文件写入/ tmp目录,没有任何问题。
所以我认为你的建议是正确的,当从浏览器调用脚本时服务器根本不允许我写。
另外,我无法使用错误日志访问该目录,因此我将尝试获得该权限。
答案 0 :(得分:1)
环境不同(可能是在尝试写入错误的目录)或者更有可能的是,cgi没有像您登录的用户那样运行。
例如,将cgi脚本作为“nobody”或“www”等执行是相当常见的。
你可以尝试让cgi将文件写入/tmp
。这应该至少确认用户cgi正在运行
答案 1 :(得分:0)
正如其他人所说,你可能正在遇到权限问题。但除非您查看错误日志,否则您无法确定发生了什么。内部服务器错误通常会掩盖实际错误。
要弄清楚实际错误是什么,你可以做两件事之一。你说你正在做CGI,所以我建议在你测试时调查cgitb
;它会在浏览器中显示Python回溯(尽管这可能对您的子流程场景没有帮助。)
否则,您将需要查看Web服务器的错误日志,该日志可以包含Python回溯,并希望向您显示正在进行的操作。这些保存的典型位置是/var/log/httpd
。如果您没有访问权限,或者无法在那里找到日志,请询问服务器管理员您可以在哪里找到它们。
答案 2 :(得分:0)
试试chmod 0666 filethatyouarewritingto.txt
如果这不起作用,请确保您的c ++文件在“其他人”组中具有可执行权限,请尝试chmod 0755 yourprogram
。