0

我有一个 Python (2.7) 脚本,它通过 SSH 连接到远程设备并对其进行配置。这个脚本在我运行时运行良好。

我有一个执行其他 Python 脚本的 PHP 页面,它们也运行良好。问题:当我从 PHP 页面运行 SSH 脚本时,它不起作用。(PHP页面和Python脚本都没有问题)

更具体地说,脚本(当由 PHP 执行时)一直运行,直到它到达第一个 SSH 相关代码 ( import paramiko)。

怎么可能,我能做些什么来让它发挥作用吗?谢谢!

(操作系统:windows XP。服务器:Wamp(Apache http 服务器)

例如,考虑这个简单的代码:

fp=open("file.txt","w")
fp.write("text")
import paramiko
fp.write("another text")
fp.close()

如果由我执行,一切正常。如果通过 PHP 页面 - 仅执行“import paramiko”之前的代码。

或者:

fp=open("file.txt","w")
fp.close()
import paramiko
fp2=open("file2.txt","w")
fp2.close()

由我执行 - 创建了两个文件。通过 php- 只有第一个。

此外:我尝试使用 Try & Catch,但没有任何结果。不会抛出异常。

4

1 回答 1

2

我的猜测是,这paramiko不在 Apache 用户的 PYTHONPATH 环境变量中。

当 Apache 启动 PHP 时,它会将 PHP 称为“Apache”用户碰巧是(在 Linux 中通常是apache(或httpd)组中的用户www-data)。有时,该用户设置的环境变量与用户通常拥有的不同。虽然这通常无关紧要,但有时它会导致奇怪的交互(我可以看到它发生在 Pip 上)。

我会添加一个尝试......除了 paramiko 周围:

try:
   import paramiko
except Exception as e:
   # log your exception here.
   pass # I put this here so the example can compile.
#rest of the script

这应该让您知道它是否已安装(我怀疑它没有)。

于 2013-06-20T20:15:10.403 回答