![]() | 1 Tonni 2014-07-07 21:34:07 +08:00 ![]() 有错误信息么?打印下上面的几个参数,确定传值成功。 |
![]() | 2 yangqi 2014-07-07 21:37:30 +08:00 一般就是权限问题 |
![]() | 3 beric OP |
![]() | 5 yangqi 2014-07-07 21:45:07 +08:00 把exec换成passthru |
![]() | 7 beric OP 2014-07-07 21:53:07 +08:00 @yangqi 但是执行某些单个的PYTHON或是BASH命令都是能正常输出的,我现在测试这个是一个有多个文件组成的PYTHON项目,不知道是不是这个影响到了…… |
![]() | 8 txlty 2014-07-07 21:55:33 +08:00 ![]() $ret = popen("python3 pythontest","r"); $read=''; while(!feof($ret)){ $read .= fread($ret, 512); } echo $read; |
![]() | 9 imn1 2014-07-07 22:14:38 +08:00 先搞清路径&权限 |
![]() | 11 beric OP @imn1 执行其它PYTHON脚本是可以的。都能在WEB上看到输出,但这个或之前我试的加了参数的就不行:比如python3 test -a xxx 这样就不行,但python3 test这样是行的会提示缺少参数什么的…… |
12 xuxu 2014-07-07 22:57:02 +08:00 权限问题,可以吧权限a+x,然后把执行php脚本的用户的权限设为sudoer,NOPASSWD |
![]() | 13 imn1 2014-07-07 23:04:00 +08:00 首先我觉得无论如何是要指定路径的,如果py有import还要另外计算清楚 如果权限足够,可以考虑用shell_exec py里面指定了执行环境,还可以免去指定解析器python3 参数等问题还要考虑escapeshellcmd 最后要注意编码 |
![]() | 14 beric OP |
![]() | 15 hehe00 2017-02-14 11:56:52 +08:00 @beric 我也是通过 web(wmap)在 PHP 里调用执行 python,传的参数是一个 doc 文件的路径,在 web 方式执行就不行,在 python 里能够正确得到这个参数(sys.argv[1]), import sys import os from win32com import client as wc if (os.path.exists(sys.argv[1])): word = wc.DispatchEx('Word.Application') doc = word.Documents.Open(sys.argv[1]) html_list_first = sys.argv[1].split('.' , 1) html_list_secOnd= html_list_first[0].split('.') html_name = html_list_second[-1] + '.html' doc.SaveAs(html_name, 10) doc.Close() word.Quit() print("OK") else: print("No file exists!") print(sys.argv[1])的时候正确输出文件的路径,但是在 doc = word.Documents.Open(sys.argv[1]) 这一行的时候就不对了,print(doc) 输出的是 none.然而这一切在 cmd 中执行的时候又是成功的.麻烦帮我看下这怎么解决,我找了好久也不知道怎么弄下去 |