Python 无法通过Django访问子流程中的/var/tmp

Python 无法通过Django访问子流程中的/var/tmp,python,django,Python,Django,我创建了一个脚本,它使用Django和python的子进程将shell脚本的执行结果输出到Web屏幕 具体来说,创建了以下两个脚本 test.py #/usr/bin/python 导入系统,操作系统 导入子流程 导入系统日志 命令列表=['/bin/sh','/var/tmp/test.sh'] proc=subprocess.Popen(args=command\u list, stdout=子流程.PIPE, stderr=子流程.PIPE, cwd=os.path.dirname(命

我创建了一个脚本,它使用Django和python的子进程将shell脚本的执行结果输出到Web屏幕

具体来说,创建了以下两个脚本

  • test.py
#/usr/bin/python
导入系统,操作系统
导入子流程
导入系统日志
命令列表=['/bin/sh','/var/tmp/test.sh']
proc=subprocess.Popen(args=command\u list,
stdout=子流程.PIPE,
stderr=子流程.PIPE,
cwd=os.path.dirname(命令列表[0]),
外壳=假)
结果=过程通信(输入=无)
打印str(结果)
  • test.sh
#/bin/bash
回声“开始”
cat/var/tmp/data.txt

  • data.txt
对这两个脚本进行了单元测试,并确认它们工作正常

但是,当我通过Django使用test.py时,test.sh的“cat”命令和data.txt存在, 显示“Cat:/var/tmp/data.txt:无此类文件或目录”

原因是什么

版本
  • python 2.7.13
  • Django 1.11.20

当我将PrivateTmp设置为PrivateTmp=false时,httpd现在可以访问/var/tmp

view /usr/lib/systemd/system/httpd.service
    PrivateTmp=false

systemctl daemon-reload
service http restart

请添加
id的输出;ls-l/var/tmp
和有关您的环境的详细信息,以回答您的问题。谢谢。我将PrivateTmp设置为PrivateTmp=false,httpd现在可以访问/var/tmp。
view /usr/lib/systemd/system/httpd.service
    PrivateTmp=false

systemctl daemon-reload
service http restart