2

I want to execute a python script,test.py, from a php function.

#!/usr/bin/env python
import random

def test() :
   print("test success")

if __name__ == '__main__':
    test()

I can successfully execute it using php command line:

php -r '$message = exec("python3 ~/../scripts/test.py"); print_r($message);' 

I've added the following to my php code:

$message = exec("python3 ~/../scripts/test.py", $output, $return_val); 

When I execute it, nothing is output (no errors in devtools). When I print the variables, $output and $message are empty and $return_val is 2 (misuse of shell builtins according to Bash documentation).

I know exec() is allowed after adding the following into the same function:

if (exec('echo TEST') == 'TEST')
    {
      echo 'exec works!';
    }

What could be causing this error? How can I execute the python script with php?

1 Answer 1

4

Your web server does not share your home directory, so ~ will point to the wrong place. Specify the full path of the file instead.

python3 will exit with 2 when it can't find the file, along with a helpful message on stderr. The web server error logs will confirm this, as will adding 2>&1 to your command to capture stderr as stdout in your variable.

Sign up to request clarification or add additional context in comments.

1 Comment

That was it! Ha, so obvious now. The exit code confused me a bit. Thanks!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.