将Python值返回给PHP且不显示它

1 投票
1 回答
2770 浏览
提问于 2025-04-18 15:01

目前我正在通过PHP执行Python脚本,代码如下:

<?php

    $output = shell_exec('python ../cgi-bin/admin_login.py');
    echo $output;

?>

这个方法运行得很好。它会显示脚本中所有print()调用的输出。

但是,我想知道如何将一个值返回给PHP,而不是让它显示在页面上?显然,我可以删除那个echo调用,但Python的return似乎没有任何作用。

这个Python脚本是用来处理登录过程的,负责所有的MySQL操作;我对PHP了解不多,所以才选择用Python来做这个。

运行脚本后,会根据登录是否成功生成一个结果。

例如:LOGGEDIN, EMPTYUSR, EMPTYPW, WRONGPW。这些都是用来表示发生了什么错误(或者成功)的代码,PHP可以根据这些代码进行后续处理。

比如,如果返回的LOGGEDIN = True,PHP就应该创建一个会话,这样网站的其他部分就知道用户已经登录了。

所以我想要的解决方案是,从PHP运行这个Python脚本,并获取这些返回值,而不在页面上显示它们。

非常感谢任何建议,
Ilmiont

1 个回答

0

不要使用 shell_exec(),而是用 exec(),然后根据返回的代码来决定接下来要做什么。

<?php
  exec('python ../cgi-bin/admin_login.py', $output, $code);
  switch($code) {
    case 0:
      echo $output;
    break;
    // other case may follow
  }
?>

警告 exec() 只会捕获标准输出(stdout),而不会捕获错误输出(stderr)。
如果你需要获取完整的输出,可以使用:

exec('python ../cgi-bin/admin_login.py 2>&1', $output, $code);

撰写回答