0

具体得到这个错误:

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 与我要转换的文件的名称相同。谢谢您的帮助。

4

1 回答 1

0

一位同事能够解决这个问题。事实证明,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 $?");

它奏效了!感谢所有帮助。

于 2020-06-09T17:26:06.073 回答