phpからpythonを呼び出す方法のメモ


概略

本記事は、phpからpythonを呼び出そうと思ったときの話で、
MAMPでサーバーを立て、その上でphpからpythonを呼び出すって感じです。
MAMP, php, python それぞれで行った設定を順に書いていきます。

MAMPの設定

多分、初期設定では.pyがハンドラーに設定されてないので追加しときます。
変更するファイルはこれ→ ~/MAMP/conf/apache/httpd.conf
AddHandolerに.pyを追加する。

http.conf
AddHandoler cgi-script .cgi .pl .py #←これ追加

pythonの設定

とりあえず適当な .pyファイルを作る。

test.py
print("Hello world")

作った.pyの先頭にpythonまでのパスを追加。
とりあえず、ターミナルで which python3 を叩く。

ターミナル
which python3
~/python3 #(環境によって内容が変わるので注意)

ターミナルの結果を元に.pyに追記。

test.py
#!~/python3 ←(環境によって内容が変わるので注意)
print("Hello world")

.pyをサーバーで動かすために謎の呪文を追加。(#!〜行の下くらいが良さそう)

test.py
#!~/python3 ←(環境によって内容が変わるので注意)
print("Content-type: text/html; charset=Shift_JIS\n\r\n")#←謎の呪文
print("Hello world")

権限の変更をする。

ターミナル
chmod 755 test.py

phpの設定

commandには呼び出す.pyファイルを指定する。
(pythonをコマンドラインから呼び出す時に記述する内容を記載)
$outputには、.pyでprint文で書き出した結果がリスト形式で入る。

test.php
  <?php
  $command="python ./test.py ";
  exec($command,$output);
  print_r(]$output);#$outputに格納されたインデックスと値の関係の一覧を表示
  echo $output[1];#表示したい要素が一つだけの場合の指定方法
  ?>

ブラウザで.pyの出力と同じ結果を確認できたらOKってとこですかね。
最後まで読んでいただきありがとうございました。
また気が向いたら投稿しようかな〜・・・