call php function from python

Question:

My PHP code:

function start($height, $width) {
    # do stuff
    return $image;
}

Here my Python code:

import subprocess
def php(script_path):
        p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
        result = p.communicate()[0]
            return result

    page_html = "test entry"
    output = php("file.php") 
    print page_html + output

    imageUrl = start(h,w)

In Python I want to use that PHP start function. I don’t know how to access start function from Python. Can anyone help me on this?

Asked By: ishita

||

Answers:

This is how I do it. It works like a charm.

# shell execute PHP
def php(code):
  # open process
  p = Popen(['php'], stdout=PIPE, stdin=PIPE, stderr=STDOUT, close_fds=True)
  
  # read output
  o = p.communicate(code)[0]
  
  # kill process
  try:
    os.kill(p.pid, signal.SIGTERM)
  except:
    pass
  
  # return
  return o

To execute a particular file do this:

width = 100
height = 100

code = """<?php

  include('/path/to/file.php');
  echo start(""" + width + """, """ + height + """);

?>
"""
res = php(code)

Note that for Python3 you need res = php(code.encode()), see the answer below

Answered By: transilvlad

Small update to previous response:

For python3 code string should be encoded to bytes-like object

php(code.encode())
Answered By: Volo
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.