『ネットオウルユーザーコミュニティ』の提供に伴い、『Q&A掲示板』は2025年3月31日正午をもって提供を終了します。[関連ニュース]

メンバーメニュー

ようこそ、ゲストさん

トップ > カテゴリ一覧 > 各種プラン > PythonとPHPの連携に関して

質問

  • ハイスピード

    PythonとPHPの連携に関して
  • 本文:

    質問させてください。
    index.py内でsubprocess.runを使ってphpスクリプトの実行を試みているのですがうまくいきません。
    subprocess.run以外は正常に動作をしており、phpもそれ単体で動作を確認しております。
    subprocess.runはサーバ内では使えないのでしょうか。
    逆にphpからPythonを実行する方法があるのでしたら教えていただければありがたいです。
    よろしくお願いいたします。

  • 緊急度:通常投稿者:ふくろうさんさん投稿時間:2024/04/20 13:31
質問に対する回答は締め切られました

回答 No.12834

  • この回答がベストアンサーです

  • 本文:

    ret = subprocess.run(["/usr/bin/php7.4", "/フルパス/example.php"])

    みたいな感じで呼び出してるんでしょうか?

  • 投稿者:k-tanさん 投稿時間:2024/04/20 15:29
質問者からのコメント

ご回答ありがとうございます!
はい、そのような感じです。
ただPHPはPythonファイルと同階層に置いているので、例で言うなら"example.php"だけです。
相対パス的に指定はできないかたちでしょうか。
よろしくお願いします。

回答 No.12837

  • 本文:

    >ret = subprocess.run(["/usr/bin/php7.4", "/フルパス/example.php"])



    コマンドラインでいうと以下のような感じで実行させてるのと同じだと思う。

    /usr/bin/php7.4「空白」/フルパス/example.php



    >ただPHPはPythonファイルと同階層に置いているので、
    >例で言うなら"example.php"だけです。
    >相対パス的に指定はできないかたちでしょうか。

    相対パスといっても、どこからの相対になってるかが不明なので
    フルパスで指定して、実行できるかどうかを確認しないと
    動かない原因の切り分けが難しいと思うけど・・。


    https://www.star.ne.jp/manual/homepage_server_spec.php




  • 投稿者:k-tanさん 投稿時間:2024/04/21 18:41
質問者からのコメント

ありがとうございます。
アドバイスをもとに試行錯誤した結果うまくいきました。

res = subprocess.run(["/usr/bin/php8.2", "example.php"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(res.stdout.decode("utf8"))

これでexample.phpのechoを受け取ることができました。
index.pyと同階層においてあるphpスクリプトを指定することともできました。


ありがとうございます!