【问题标题】:Python script won't exec from php when specific library is used使用特定库时,Python 脚本不会从 php 执行
【发布时间】:2016-04-27 10:00:11
【问题描述】:

我正在尝试执行 Python 脚本来获取和设置 ROS 中的参数服务器。当我运行任何其他简单的 Python 脚本(例如打印“Hello”)时,我会取回 PHP 中的值。但是当我运行这段代码时:

 #!/usr/bin/env python
 import roslib
 import rospy
 import sys
 import re
 import string

 get = rospy.get_param("param")
 print get

我得到一个空的回声。但是,此代码在终端中运行良好!

我在 PHP 中所做的只是:

 $output = exec("python path/script.py")
 echo $output;

我尝试了 shell_exec,我尝试在命令中使用 python,但没有。我也试过 /usr/bin/python 仍然不能用于这个特定的代码,但一切都适用于简单的打印!

【问题讨论】:

  • 你能得到任何错误吗?尝试查找是否存在导致问题的异常 - 例如: try: get = rospy.get_param("param") except BaseException as e: # save e to file
  • rospy之前好像没有初始化过,应该是roslib.rospy还是roslib?我对图书馆一无所知,但我想这可能是错误。
  • @ishaan 这是导入库的方式,正如我已经说过的,这段代码在我运行它时可以完美运行,但是当我从 PHP 运行它时它不起作用。
  • @IliyanBobev 我得到一个空白文档,我测试了它是否记录错误,当我删除 roslib 和 rospy 时它确实记录错误,当它们被导入时没有任何作用。
  • 对不起,我无法格式化评论中的代码;只需将get = rospy.get_param("param") 放在try-except 中。在 try 部分中,尝试将 get 的值保存到文本文件中,并在 except 部分中尝试捕获异常详细信息并将其保存到文件中。这样你就会有一个日志。

标签: php python ros rospy


【解决方案1】:

事实证明,Apache 的用户没有所需的环境变量。所以你必须在Apache的中添加你需要的环境变量路径。你可以设置它们out here

【讨论】:

  • 感谢您的回答!但是我不明白你是如何为这种特殊情况添加这些环境变量的......你能更具体一点吗? (我知道这是一个老问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2015-04-26
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多