0

SSH 経由でリモート デバイスに接続して構成する Python (2.7) スクリプトがあります。このスクリプトを実行すると、問題なく動作します。

他の Python スクリプトを実行する PHP ページがあり、それらも正常に動作しています。問題: PHP ページから SSH スクリプトを実行すると、SSH スクリプトが機能しません。(PHPページもPythonスクリプトも問題ありません)

より具体的には、スクリプト (PHP によって実行される場合) は、最初の SSH 関連コード ( import paramiko) に到達するまで実行されます。

どうすればそれができますか、それを機能させるために私にできることはありますか? ありがとう!

(OS: Windows XP。サーバー: Wamp (アパチ 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 を起動すると、「Apache」ユーザーがたまたま (Linux では通常apache(またはhttpd) グループ内のユーザー)として PHP が呼び出されwww-dataます。このユーザーは、ユーザーが通常使用する環境変数とは異なる環境変数を設定することがあります。これは一般的には問題ではありませんが、奇妙な相互作用が発生することがあります (Pip で発生していることがわかります)。

私は試してみます...パラミコの周りを除いて:

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 に答える