0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python3のSubprocess.run()をCGIスクリプトで使う

Last updated at Posted at 2020-09-21

現象

以下のコードを書き、拡張子を.cgiとして、/usr/lib/cgi-binに保存する。


import subprocess
print('Content-type: text/html¥n')

print(subprocess.run('hostname'))

ブラウザからこのCGIスクリプトにアクセスすると、500 Internal Server Errorが返ってくる。

Apacheのログでは、

malformed header from script

と出力される。

原因と解決方法

subprocess.run()は、何も指定しないと標準出力に結果を出力しない。

デフォルトでは、標準出力や標準エラー出力を捕捉しません。捕捉したい場合は stdout または/および stderr 引数に PIPE を渡してください。

引数stdoutsubprocess.PIPEを指定すると標準出力に結果を出力する。
`subprocess.run()'をCGIスクリプトで使うときは以下のようにする。

result = subprocess.run('hostname', stdout=subprocess.PIPE)
print(result.stdout)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?