Running a Python script from PHP
Tested on Ubuntu Server 10.04. I hope it helps you also on Arch Linux.
In PHP use shell_exec function:
Execute command via shell and return the complete output as a string.
It returns the output from the executed command or NULL if an error
occurred or the command produces no output.
<?php
$command = escapeshellcmd('/usr/custom/test.py');
$output = shell_exec($command);
echo $output;
?>
Into Python file test.py
, verify this text in first line: (see shebang explain):
#!/usr/bin/env python
If you have several versions of Python installed, /usr/bin/env will
ensure the interpreter used is the first one on your environment's
$PATH. The alternative would be to hardcode something like
#!/usr/bin/python; that's ok, but less flexible.In Unix, an executable file that's meant to be interpreted can indicate
what interpreter to use by having a #! at the start of the first line,
followed by the interpreter (and any flags it may need).If you're talking about other platforms, of course, this rule does not
apply (but that "shebang line" does no harm, and will help if you ever
copy that script to a platform with a Unix base, such as Linux,
Mac, etc).
This applies when you run it in Unix by making it executable
(chmod +x myscript.py) and then running it directly: ./myscript.py,
rather than just python myscript.py
To make executable a file on unix-type platforms:
chmod +x myscript.py
Also Python file must have correct privileges (execution for user www-data / apache if PHP script runs in browser or curl)
and/or must be "executable". Also all commands into .py
file must have correct privileges.
Taken from php manual:
Just a quick reminder for those trying to use shell_exec on a
unix-type platform and can't seem to get it to work. PHP executes as
the web user on the system (generally www for Apache), so you need to
make sure that the web user has rights to whatever files or
directories that you are trying to use in the shell_exec command.
Other wise, it won't appear to be doing anything.
How to execute python script from php?
You can make an :
<?php
$command = escapeshellcmd('/usr/custom/test.py');
$output = shell_exec($command);
echo $output;
?>
More information on this Stack Overflow Question.
Running a Python script from PHP
Running python script with php - working in console not in web browser
Problem solved!
As i mentioned in my question i was having problem with some kind of user privileges i modified my code and forced it to use bitnami as user and now its working!
<?php
header('Access-Control-Allow-Origin: *');
define('ROOTPATH', dirname(__FILE__));
$output = shell_exec('sudo -H -u bitnami python test.py ');
echo $output;
?>
PermissionError when running Python script from PHP
Not only was the write permitted sporadically, also SELinux reported errors just sometimes.
Solution: Most package updates were installed, every troubleshoot suggestion of the SELinux logs was executed, and the machine was rebooted. Afterwards, I've had to set SELinux to permissive again.
That doesn't explain why the write only worked sometimes, but it does work always now.
Related Topics
"Premature End of Data" Error with PHP
Use of Undefined Constant Stdin - Assumed 'Stdin' in C:\Wamp\Www\Study\Sayhello.PHP on Line 5
PHP Get Height and Width in PDF File Proprieties
Hightest Value of an Associative Array
Expected Response Code 250 But Got Code "", with Message ""
How to Get the Image Type in PHP
Dump Facility in C++ Like Var_Dump() in PHP
Jquery $.Post Processing JSON Response
PHP Foreach() with Arrays Within Arrays
Passing and Parse Paypal Ipn Custom Field
Pdo's Rowcount() Not Working on PHP 5.2.6+
How to Remove Values from an Array in PHP
How to Get a List of MySQL Databases in PHP Using Pdo