Can't execute python script from PHP (apache2)

Question:

I want to execute Python script from PHP file using apache2 on my macos. I am able to execute simple python script like:

From PHP:

$result = shell_exec("python /Library/…./example.py '$name' ‘$email’ ”);
var_dump($result);

To Python

import sys

x = sys.argv[1]
y = sys.argv[2]

print("name: " + x + "<br>")
print("email: " + y + "<br>")

and the output is:

enter image description here

But when I try to import packages like :

import openpyxl
import numpy as np
import matplotlib.pyplot as plt

I get:

enter image description here

My question is, does anyone knows:

1 – How can I make those (and any other) packages work?

2 – shell_exec is currently executing python2. How can I add python3?( if I write python3 instead of python won’t work)

Asked By: Alex.Six

||

Answers:

In case anyone has the same problem in the future, here’s what I found out.

By executing some different commands via shell_exec, I noticed that it was behaving differently than my terminal.

enter image description here

So I find out that when I execute python3 over shell_exec, it was not pointing to the right address, then all I had to do was to pass the right address:

$result = shell_exec("/Library/Frameworks/Python.framework/Versions/3.7/bin/python example.py '$name' ‘$email’ ”);
var_dump($result);

And now the script works 🙂

Answered By: Alex.Six

Instead of use the whole file path, put the file path in an enviroment var in order to access python / python3 program wherever you want

Answered By: Lornis Hervilla
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.