Php cannot exec python script on - RPI3 - php

I cannot at all execute a python script via php exec. This is my code
<?php
$output = shell_exec("python /var/www/html/socket/power_on.py");
$output = shell_exec("sudo python /var/www/html/socket/power_on.py");
$output = shell_exec("/usr/bin/python /var/www/html/socket/power_on.py");
echo $output;
?>
I've tried all of the above yet no luck the only command that seems to work that I've also tried is 'ls'
How to I give the user www-data access to sudo, as that may work. Since I've tried chmod 777 on the directory and file still no luck

Related

Why this python code is not executing through shell_exec in php?

I have been trying to run a python code that takes input from terminal like this
python3 mycode.py input1 input2 and it perfectly works when I try it on terminal. But it is not working when I try it on php's shell_exec.
My php-
<?php
$a = 'hello';
$b = 'world';
$output = shell_exec('python3 /path/to/mycode.py '.$a.' '.$b.'');
echo '<pre>'.$output.'</pre>';
?>
But it doesn’t output anything.
I have also tried adding
#!/usr/bin/python3
at the top of my python code and
sudo chmod +X mycode.py
but still not working.
Edit:
I found the problem but still don't know how to fix it. The mycode.py contains PIL module but it cannot be used on www-data user. So I tried sudo chown -R chris:www-data /var/www/html/mysite and now it is showing PIL module not found. How can I install PIL module for www-data?
The exec() function should return an array of the output of the command executed. With that I would recommend using print_r().
Please try the following:
<?php
$a = 'hello';
$b = 'world';
exec('python3 /path/to/mycode.py '.$a.' '.$b, $command_output);
echo PHP_EOL;
print_r($command_output);
echo PHP_EOL;
?>
In an attempt to rule out a permissions issue you can also execute the php script from your terminal. Assuming you are using Apache whereas the service account is commonly www-data the account may not have access to the file you are attempting to execute.
If that doesn't work for you attempt running the php script as sudo. If that fails make sure to review your php logs for any clues.

How to run Python3 script from php on CPanel?

I have a python script that i want to run from index.php and they both are in the same directory.
The problem is that there's no output shown on the page(index.php).
I am running the page on a CPanel shared hosting from GoDaddy.
I have the permissions -rwx for both the files.
There's no error in running the python3 script file from the terminal.
The same files run smoothly on my computer's localhost but not on the CPanel.
Am able to run bash files using the same php code.
I have tried using system() in php to call the python3 script file but this doesn't seems to work.
index.php:
<?php
$comm = "python3 test.py";
echo $comm;
$output = system($comm);
echo "\n";
print($output);
?>
test.py:
print ("Hello")
Current Output:
python3 test.py
I expect the output to be:
python3 test.py Hello
I think you will need to use shell_exec to run your python code like that
<?php
$command = escapeshellcmd('/usr/custom/test.py');
$output = shell_exec($command);
echo $output;
?>
and the first line in the python file should be
#!/usr/bin/env python
Don't forget to give your python file the privileges
chmod +x test.py

Running Python script in PHP:

I make Relay-Website-with-Raspberry now python application is work but on php is no work
this php screp,
<?php
$output = shell_exec('sudo python 1on.py 2>&1');
echo "<pre>$output</pre>";
header("Location: ../index.php");
exit;
?>
This is not a right procedure to run a python script, Instead running python script in sudo mode give your file permission to www-data
chgrp www-data /path/to/python-script.py
put first line in your python script: #!/usr/bin/env python so the script knows which program to open it with..
Make your script executable
chmod +x /path/to/python-script.py
then try running the script
<?php
$output = shell_exec("/path/to/python-script.py");
echo "<pre>$output</pre>";
header("Location: ../index.php");
exit;
?>

Launch python file from PHP on LINUX server

I tried many solutions but nothing it works :
echo '<pre>';
shell_exec("python /home/folder/python/mapfile_compress.py");
shell_exec("sudo -u wwwexec python escapeshellcommand(/home/folder/python/mapfile_compress.py) $uid");
shell_exec("sudo chmod +x /home/folder/python/mapfile_compress.py");
system("bash /home/folder/python/mapfile_compress.py");
passthru("bash /home/folder/python/mapfile_compress.py");
passthru("/home/folder/python/mapfile_compress.py");
exec("bash /home/folder/python/mapfile_compress.py");
echo '</pre>';
I launched indivdually them but in all cases, Firebug returned : '<pre>'
So I tried this code founded on Stack Overflow :
$command = escapeshellcmd('chmod +x /home/folder/python/mapfile_compress_test.py');
echo $command;
$output = shell_exec($command);
echo $output;
But firebug returned nothing.
My python file begin with #!/usr/bin/env python and if I launch it on server that works !
Do you knwo how can I launch my python file from PHP file ?
chmod will return 0 on success and > 0 on error.
Make sure that the file is able to run by just executing it as the web user. When +x is properly set, you can execute it by just calling $ /path/to/your/file.py, the shebang in the first line in your script #!/usr/bin/env python should define the correct python based on your env.
You can test this by running:
$ /usr/bin/env python /path/to/your/file.py
So check your file permissions to check if the file is executable by the user that runs the php script.
Just to test, you can just print a few lines in your python file
#!/usr/bin/env python
print "test line 1"
print "test line 2"
Then if you have verified permissions and the correct use of python, you can do this in your php.
$command = escapeshellcmd('/path/to/your/file.py');
$output = shell_exec($command); // get all output or use passthrough, exec will only return the last line.
echo "<pre>{$output}</pre>;
At first, Do you have enabled shell_exec/system/passthru commands in php.ini?
shell_exec("python /home/folder/python/mapfile_compress.py");
I think, it could be problem with your $PATH. Try something like: (use full path to python)
shell_exec("/usr/bin/python /home/folder/python/mapfile_compress.py");
shell_exec("/usr/local/bin/python /home/folder/python/mapfile_compress.py");
In my case that's work if I write this code :
$command = escapeshellcmd('python /path/to/your/file.py');
exec($command);

running shell command from php with sudo

I want to run this code from php
echo <password> | sudo -S /usr/sbin/asterisk -rx "dongle show devices"
but it's not working. Can anyone help?
You can just use the 'backtick' character (`) around your shell string like:
<?php
$output = `command_goes_here`;
echo $output;
?>
Keep in mind this will only work if the shell_exec() function would work on that server, which could also be used in a similar way.
Use php function shell_exec or exec to execute shell commands
For more details
http://www.php.net/shell_exec
http://php.net/manual/en/function.exec.php
u can try by this if u want to run shell script command in php file
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
u can also try other way by create .sh file for shell script and run that .sh file by php function
$output = shell_exec('./deploy.sh');
echo "<pre>".$output."</pre>";

Categories