PHP 执行 Python

0 投票
1 回答
943 浏览
提问于 2025-04-17 17:27

我正在尝试在一个PHP页面上执行一个Python程序。这个Python程序会生成一些HTML代码,我可以在我的PHP页面中使用这些代码。当我在终端中直接运行这个Python程序时,一切都正常。

但是,当我从PHP执行这个Python程序时,什么都没有发生。如果我使用 exec("python program.py",$output),那么 $output == "array ( )"

BUT if I remove the line `f = open('/var/www/data.php', w)`  
the `$output == " array ( 0 => 'start program', 1 => 'open error' ) "`

这是PHP代码的一部分:

 output = null;
 exec("python /var/www/webwrite.py", $output);
 echo var_export($output, TRUE);

这是Python代码的一部分:

print "start program"

f =  open('/var/www/data.php', 'w')
if f <> 0:
    print "open file"
    f.write('<div class=divdata><pclass="data">Data</p><div id="webdata">')
    fstr = '%3.1f'%data
    f.write(fstr)
    f.write('</div></div>')
    f.close()
else:
   print "open error" here

我该如何在从PHP执行的Python中使用 open(filename, w) 呢?为什么在从PHP执行时我不能使用open命令?有没有替代“open”的方法?

1 个回答

0

通常在这种情况下,你可能遇到了路径问题或者权限问题。

试着把你的 Python 脚本的所有权改成和运行网页服务器的用户一样,比如说(假设网页服务器是以单个用户身份运行的):

chown apache:apache your.py

它打开或写入的任何文件也需要归同一个用户所有。然后你可能需要提高权限:

chmod 775 your.py

如果这样还不行,就把你的 Python 脚本的完整路径写上。你可以通过以下方式获取这个路径:

which python

不过,不要把这些完整路径直接写死在 PHP 代码里,应该放在一个配置文件中。

撰写回答