2

別のスクリプトの呼び出しに問題があります.python main.py(次にtest3.pyを呼び出す)を呼び出すだけでコンソールから正常に動作しますが、Webサーバー経由で実行すると、以下の不可解なエラーが発生します

これを呼び出すことはできません (test3 は単なるプリントです...)

#proc = subprocess.Popen(['python', 'test3.py'], stdout=subprocess.PIPE)

しかし、これはうまくいきます

proc = subprocess.Popen(['ls', '-la'], stdout=subprocess.PIPE)

FreeBSD の /var/log/httpd-error.log のエラー ログ

[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] Traceback (most recent call   last):
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/www/apache22/data/main2.py", line 22, in <module>
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] proc = subprocess.Popen(['python', 'test3.py'], stdout=subprocess.PIPE)
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/lib/python2.7/subprocess.py", line 679, in __init__
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] errread, errwrite)
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/lib/python2.7/subprocess.py", line 1228, in _execute_child
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] raise child_exception
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] OSError
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] :
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] [Errno 2] No such file or directory
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] File does not exist: /usr/local/www/apache22/data/favicon.ico
4

2 に答える 2

2

python実行可能ファイルが webservers実行可能ファイル PATHにありません。Web サーバーは、 chrootまたは同様の手法で保護されているため、python インストールにアクセスできない場合もあります。

which次のように、python 実行可能ファイルのフル パスを指定してみてください (コマンドを使用して対話的に見つけることができます)。

proc = subprocess.Popen(['/usr/bin/python', 'test3.py'], stdout=subprocess.PIPE)
于 2012-03-01T17:39:16.670 に答える
0
  1. OS を介して呼び出す代わりに、test3 コードをプロジェクトに直接インポートできますか?

  2. 相対パスはすべて正しいですか? 間違ったディレクトリから何かを実行している、またはリモート マシンのディレクトリに必要なファイルが不足しているように思えます。

于 2012-03-01T17:39:30.813 に答える