在服务器上运行python脚本可以通过命令行工作,但不能像apache用户那样通过浏览器工作

2024-06-02 07:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

具体地说,获取此错误:

WARNING: Cannot find unidecode lib. Expect issues with index sorting
lstat(./kpsewhich) failed: ./kpsewhich: No such file or directory
kpathsea: Can't get directory of program name: ./kpsewhich
Traceback (most recent call last):
  File “scriptname.py”, line 46, in 
    doc = TeX(myfile=outputname).parse()
  File "/usr/local/lib/python3.6/site-packages/plasTeX/TeX.py", line 136, in __init__
    fname = self.kpsewhich(myfile)
  File "/usr/local/lib/python3.6/site-packages/plasTeX/TeX.py", line 1380, in kpsewhich
    raise OSError('Could not find any file named: %s' % name)
OSError: Could not find any file named: uploads/filename

我有一个python脚本,用于转换我在apache服务器上使用PHP表单运行的一些文件。当我直接通过命令行运行python脚本时,我能够获得一个成功的输出(生成一个单独的文件),但是当我通过浏览器运行它时,我得到了上面的错误

我已经检查确认pypandoc已经与python脚本的其他模块一起导入

我使用(在callscript.php中)调用python脚本

shell_exec("/usr/bin/python3 scriptname.py $target_file 2>&1; echo $?");

具体来说,这一行给出了scriptname.py中的错误:

TeX(myfile=outputname).parse()

我应该注意,outputname与我试图转换的文件的名称相同。谢谢你的帮助


Tags: inpy脚本libusr错误linefind
1条回答
网友
1楼 · 发布于 2024-06-02 07:44:48

一位同事解决了这个问题。事实证明,PHP会重置PATH变量,而不是将其作为

shell_exec("/usr/bin/python3 scriptname.py $target_file 2>&1; echo $?");

我把它当作

shell_exec("PATH=/usr/bin python3 scriptname.py $target_file 2>&1; echo $?");

成功了!谢谢你的帮助

相关问题 更多 >