从 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 函数(它需要一个参数)?
从PHP运行脚本时,RPi GPIO控件丢失(没有任何错误)