0

I'm trying to run a python script from php and it gives me this error

sh: 1: python3: not found

The php code is

exec('python3 ./myscript.py data.json 2>&1', $output);

It runs ok from the terminal, I even tried running python3 from terminal as www-data and it works

$ sudo -u www-data python3 -V
Python 3.5.3

Executing with the full path exec('/usr/local/bin/python3 ./myscript.py data.json 2>&1', $output); gives the same result.

Server SO is Debian GNU/Linux 8 (jessie) and I'm using nginx

This worked for me in an Ubuntu + apache2 environment but I don't know what I'm missing here.

I've read this but it doesn't have a solution, and also this, but all the ways to do an exec gives me the same problem.

Also the exec returns error code 127 command not found, shebang is #!/usr/bin/env python3, and if I do exec('echo $PATH') it shows /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

I need to execute the script from php or from any user interface because the user needs to upload a file and then the script executes and returns the file modified. I need that a dozen of users have access to do this without having to install an execute a python script locally.

Output of ls -l /usr/bin | grep python

lrwxrwxrwx. 1 root     root           26 Jan 25  2017 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x. 1 root     root         1056 Jan 24  2017 dh_python2
lrwxrwxrwx. 1 root     root           29 Jan 25  2017 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx. 1 root     root           23 Sep 26  2018 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx. 1 root     root           23 Sep 27  2018 pdb3.5 -> ../lib/python3.5/pdb.py
lrwxrwxrwx. 1 root     root           31 Jan 20  2017 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx. 1 root     root           26 Jan 25  2017 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx. 1 root     root            9 Jan 24  2017 python -> python2.7
lrwxrwxrwx. 1 root     root            9 Jan 24  2017 python2 -> python2.7
-rwxr-xr-x. 1 root     root      3779512 Sep 26  2018 python2.7
lrwxrwxrwx. 1 root     root            9 Jan 20  2017 python3 -> python3.5
lrwxrwxrwx. 1 root     root           16 Jan 20  2017 python3-config -> python3.5-config
-rwxrwxrwx. 2 www-data www-data  4751184 Sep 27  2018 python3.5
lrwxrwxrwx. 1 root     root           33 Sep 27  2018 python3.5-config -> x86_64-linux-gnu-python3.5-config
-rwxrwxrwx. 2 www-data www-data  4751184 Sep 27  2018 python3.5m
lrwxrwxrwx. 1 root     root           34 Sep 27  2018 python3.5m-config -> x86_64-linux-gnu-python3.5m-config
lrwxrwxrwx. 1 root     root           10 Jan 20  2017 python3m -> python3.5m
lrwxrwxrwx. 1 root     root           17 Jan 20  2017 python3m-config -> python3.5m-config
lrwxrwxrwx. 1 root     root           29 Jan 24  2017 pyversions -> ../share/python/pyversions.py
lrwxrwxrwx. 1 root     root           33 Jan 20  2017 x86_64-linux-gnu-python3-config -> x86_64-linux-gnu-python3.5-config
lrwxrwxrwx. 1 root     root           34 Sep 27  2018 x86_64-linux-gnu-python3.5-config -> x86_64-linux-gnu-python3.5m-config
-rwxr-xr-x. 1 root     root         3229 Sep 27  2018 x86_64-linux-gnu-python3.5m-config
lrwxrwxrwx. 1 root     root           34 Jan 20  2017 x86_64-linux-gnu-python3m-config -> x86_64-linux-gnu-python3.5m-config
  • It returns 127 command not found, shebang is #!/usr/bin/env python3 if I do exec('echo $PATH') it shows /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin – Jorge Romo May 07 '20 at 15:24
  • edited with more data – Jorge Romo May 07 '20 at 16:10
  • (Reopened, but I'm afraid this question still isn't very answerable/reproducible. Why is the binary owned by www-data? FPMs effective uid?) – mario May 07 '20 at 16:38

0 Answers0