2017-07-27 78 views
2

我有python脚本,我想通过.php加载到我的html中,所以我在test.php中添加了这段代码。如何从PHP文件运行python文件?

<?php 
$command = escapeshellcmd("/var/www/html/ledon.py"); 
$output = shell_exec($command); 
echo $output; 
?> 

Shell_exec函数的工作原理就好像我把ls -l而不是$命令一样显示所有文件。所以我不确定我在做什么错误escapeshellcmd函数。 谢谢。

+2

没有脚本包含#!告诉它在哪里可以找到python。如果不是,你可能想说“python /var/www/html/ledon.py”。您可能还想确保运行Web服务器的用户能够访问该文件。 –

+0

我已经按照你的建议python /var/www/html/ledon.py更新了我的代码,但它仍然没有给我任何东西。 – vsoni

+0

如果在命令提示符下键入命令,会发生什么情况。那么如果你使用su成为运行apache的用户并再次运行它,会发生什么? –

回答

0

在Python中,您必须通过调用脚本'python somescript.py'来调用解释器。请记住,我对PHP知之甚少,我会假设你需要做:$command = escapeshellcmd("python /var/www/html/ledon.py");,假设你的shell有一个连接到Python的地方。

+1

不知道为什么有人低估了你,你的答案没有问题。 – Toastrackenigma

0

从官方doc

在此提醒那些试图在Unix类型的平台上使用了shell_exec和似乎无法得到它的工作。 PHP作为系统上的Web用户(generally www for Apache)执行,因此您需要确保Web用户对shell_exec命令中您尝试使用的任何文件或目录具有权限。其他方面,它似乎没有做任何事情。

Python文件应该具有正确的权限(如果PHP脚本在浏览器中运行或通过curl执行用户www-data/apache)和/或必须是“可执行的”。 .py文件中的所有命令也必须具有正确的权限。

您可能需要使用sudo和你的脚本中添加例外sudoers文件

0

你的shell命令是错误的。您需要指定要在文件上运行的程序 - 即用Python的运行它,你需要使用Python这样运行这个程序:

python /var/www/html/ledon.py 

但是,你需要使用system而非shell_exec

因此,完整的PHP代码应该是:

<?php 
$command = escapeshellcmd("python /var/www/html/ledon.py"); 
$output = system($command); 
echo $output; 
?>