在LINUX服务器上从PHP启动python文件

时间:2017-06-29 07:41:10

标签: php python linux

我尝试了很多解决方案,但没有任何效果:

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>';

我单独推出了它们,但在所有情况下,Firebug都返回了:'<pre>'

所以我尝试了基于Stack Overflow的代码:

$command = escapeshellcmd('chmod +x /home/folder/python/mapfile_compress_test.py'); echo $command; $output = shell_exec($command); echo $output;

但是,萤火虫什么都没回来。 我的python文件以#!/usr/bin/env python开头,如果我在有效的服务器上启动它!

你知道如何从PHP文件中启动我的python文件吗?

3 个答案:

答案 0 :(得分:1)

成功后

chmod将返回0并且&gt;错误时为0。

确保只需将其作为Web用户执行即可运行该文件。正确设置+ x后,只需调用$ /path/to/your/file.py即可执行它,脚本#!/usr/bin/env python第一行中的shebang应根据您的环境定义正确的python。

您可以通过运行以下来测试:

$ /usr/bin/env python /path/to/your/file.py

因此,请检查您的文件权限,以检查该文件是否可由运行php脚本的用户执行。

只是为了测试,你可以在你的python文件中打印几行

#!/usr/bin/env python

print "test line 1"
print "test line 2"

然后,如果您已经验证了权限并正确使用了python,则可以在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>;

答案 1 :(得分:0)

首先,您是否在php.ini中启用了shell_exec / system / passthru命令?

shell_exec("python /home/folder/python/mapfile_compress.py");

我认为,你的$ PATH可能有问题。尝试类似:(使用python的完整路径)

shell_exec("/usr/bin/python /home/folder/python/mapfile_compress.py");
shell_exec("/usr/local/bin/python /home/folder/python/mapfile_compress.py");

答案 2 :(得分:0)

在我的情况下,如果我写这段代码就可以了:

$command = escapeshellcmd('python /path/to/your/file.py');
exec($command);