python - 无法在 Linux 服务器上以编程方式写入文件

标签 python linux cgi subprocess

我有一个 python CGI 脚本,它采用输入 xy(整数)形式,并使用 subprocess 将其传递给 C++ 可执行文件程序将两个值的总和写入文本文件。

代码在我的本地机器上运行良好。然而,经过多次测试,我发现每当我在我的服务器上运行这个程序(在 /var/www 中)并尝试写入文件时,都会发生某种错误,因为我得到“内部服务器错误"页面。

服务器不是我的,所以我实际上没有 sudo 权限。但是从 putty,我可以手动运行可执行文件,它确实写入了文件。

我的猜测是我必须以某种方式从具有一定权限的 python 脚本运行可执行文件,但我不确定。如果有任何建议,我将不胜感激!

编辑:
@gnibbler:有趣的是,我能够毫无问题地将文件写入/tmp 目录。

所以我认为您的建议是正确的,服务器根本不允许我在从浏览器调用脚本时编写。

此外,我无法访问包含错误日志的目录,因此我将不得不尝试获得权限。

最佳答案

要么环境不同(可能它试图写入错误的目录),要么更可能的是,cgi 运行的用户与您登录的用户不同。

例如,cgi 脚本以“nobody”或“www”等方式执行是很常见的。

您可以尝试让 cgi 将文件写入 /tmp。这至少应该确认 cgi 正在运行的用户

关于python - 无法在 Linux 服务器上以编程方式写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10550858/

相关文章:

python - 多处理嵌套Python循环

python - 在Python中插值网格时忽略NaN

css - Susy at-breakpoint 没有在预期的点中断

c - 简单中断处理程序 : request_irq returns error code -22

javascript - 可以上传文件并解析json结果吗?

python - 如何在 python 2.5 中将 Python float 转换为十六进制字符串?附加的无效解决方案

python - Django Celery 任务记录

linux - 如何识别,是什么让 Linux 系统停滞不前?

javascript - 如何使用Python/CGI进行文件上传

mysql - Perl:如何将某个 MySQL 表视为 utf8