【发布时间】:2015-03-21 10:20:56
【问题描述】:
我的应用程序中有一个函数,它调用 subprocess.popen 来调用 .exe 应用程序,该应用程序使用 Microsoft.Office.Interop.Excel 库打印 Excel 文件,当我使用 manage.py runserver 启动服务器时,调用很顺利好吧,我的 .exe 完成了这项工作,但是当我启动 apache 服务器(即使使用管理员用户)时,除了子进程部分之外的所有其他内容都正常,它根本不调用命令。
我在我的 exe 中放了一些 Console.Write 来帮助我知道问题出在哪里。当我使用 django 服务器运行时,一切正常,但是使用 apache 时,Interop 会抛出这个错误:
Microsoft Excel no puede obtener acceso al archivo 'E://Documents/092647282000.xls'. Puede haber varios motivos:
\x07 El nombre o la ruta del archivo no existen.
\x07 Otro programa est\xa0 usando el archivo.
\x07 El libro que est\xa0 intentando guardar tiene el mismo nombre que otro libro que est\xa0 abierto en estos momentos.
基本上它说找不到文件或其他程序正在使用它,或者我要保存的书具有相同的名称(但我只是打开它,而不是保存它)。内置 django runserver 命令不会发生这种情况
如何让 apache 运行这个系统(控制台)命令?
args = []
args.append('ImprimirExcel.exe')
args.append(a)
args.append(self.impresora)
proc = subprocess.Popen(args, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
close_fds=False)
(stdout_txt, stderr_txt) = proc.communicate("")
proc.wait()
logging.error('%d %s %s' % (proc.returncode, stdout_txt,
stderr_txt))
logging.error(args)
注意事项:
我正在使用logging.error 使 XAMPP 将此消息保存在错误日志中(更易于访问)。
我正在使用带有 XAMPP 的 Windows 8
我使用 python 2.7、Django 1.7 和 apache 与 Xampp(Apache/2.4.7 (Win32) OpenSSL/1.0.1e mod_wsgi/3.5 Python/2.7.8 PHP/5.5.6)
这是我的 httpd.conf
...
LoadModule wsgi_module modules/mod_wsgi.so
...
WSGIScriptAlias /App "E:/Documents/App/App/App/wsgi.py"
Alias /media "E:/Documents/App/App/media"
Alias /static "E:/Documents/App/App/static"
<Directory "E:/Documents/App/App/static">
Require all granted
</Directory>
<Directory "E:/Documents/App/App/media">
Require all granted
</Directory>
<Directory "E:/Documents/App/App">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
【问题讨论】:
-
您是否尝试过修复权限以便网络服务器可以访问该文件?
-
该文件是由服务器应用程序创建的,但该文件夹对“所有人”具有“完全控制”(我这样做是为了测试)所以没有权限问题:(
-
@Alex 你解决了吗?我也是同样的情况。我希望有人在这里给我一些指导stackoverflow.com/questions/44316733/…
标签: python django apache subprocess