从 php 执行的 python 脚本给出错误

Posted

技术标签:

【中文标题】从 php 执行的 python 脚本给出错误【英文标题】:python script executed from php gives error 【发布时间】:2013-04-19 07:23:46 【问题描述】:

在我的 debian 上,我运行 xampp。我想使用 php shell_exec 执行 python 脚本。 这是我的php代码:

shell_exec("/opt/lampp/htdocs/news/hello.py 2>1 &");

当我从浏览器运行它时,我得到了这个错误:

/usr/bin/python: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/bin/python)

如果我使用以下命令从终端窗口运行它:php /opt/lampp/htdocs/page/index.php 它可以正常工作。 那么有什么想法可以让它在浏览器上运行吗? 谢谢

【问题讨论】:

这不是同一个外壳。一个外壳所具有的东西在另一个外壳中丢失了。也许只是一个环境变量或其中一个值?比较展位环境可能会引导您更轻松地排除故障。抱歉,我不太了解python,所以我知道那个错误消息究竟意味着什么 也许在网上搜索错误信息很麻烦,看来你不是第一个看到它的人:ubuntuforums.org/showthread.php?t=1905963 【参考方案1】:

我猜 xampp 带有它自己的库而不是使用系统库,这可能意味着它将 LD_LIBRARY_PATH 设置为它的本地库目录。

这也会导致其他从php启动的程序使用这个库,可能不兼容。

要验证这一点,请尝试system("env");,它会向您显示所有导出的环境变量。如果设置了LD_LIBRARY_PATH,请使用:

shell_exec("LD_LIBRARY_PATH= /opt/lampp/htdocs/news/hello.py 2>1 &");

在运行 python 脚本之前取消设置。

【讨论】:

我知道Traceback (most recent call last): File "/docvert/docvert-cli.py", line 12, in <module> import core.docvert File "/docvert/core/docvert.py", line 9, in <module> import docvert_libreoffice File "/docvert/core/docvert_libreoffice.py", line 18, in <module> import uno File "/usr/lib/python2.7/dist-packages/uno.py", line 52, in <module> _g_ctx = pyuno.getComponentContext( ) SystemError: Error during bootstrapping uno (RuntimeException):cannot open file:///root/.ure/types.rdb 这意味着python脚本现在正在运行,但是脚本本身有一个不同的问题,与这个没有直接关系。您应该针对该问题打开一个新问题。

以上是关于从 php 执行的 python 脚本给出错误的主要内容,如果未能解决你的问题,请参考以下文章

我如何从 php 执行 python 函数(它需要一个参数)?

Python脚本给出`:没有这样的文件或目录`

从PHP运行脚本时,RPi GPIO控件丢失(没有任何错误)

python在powershell中运行脚本给出'非utf'错误[重复]

终端直接执行py文件,不需要python命令

从 Apache Laravel PHP 控制器在 Raspberry PI 上执行 python 脚本