php调用python脚本

1.php使用exec函数,函数原型:

string exec(string $command [, array &$output [, int &$return_var]])

2.php使用system函数,函数原型:

string system(string command [, int $return_var])

实例

<?php
    exec("python test.py 100",$date,$ret);
    echo($date[0]);
    //上述代码表示使用python解释器调用test.py,并传入100作为参数,$date为.py文件的输出值,且输出形式为print(),而不是return,$ret判断是否调用成功,成功为0,否则为非0值
?>
import sys
list = sys.argv
print(list[1])
#sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个),list[0]默认代表执行的py文件相对于当前工作目录的路径,因此从外界得到的值由[1]开始

注意:在调用过程中可能有各种错误的发生,可使用如下指令进行替换以观察错误原因:

exec("python test.py 2>&1",$ret);
print_r($ret);
#替换为上述指令后在浏览器中执行时将会直接输出错误原因

坑点

1.若php在命令行模式下正常运行而在浏览器中无法运行则很可能为权限问题,将代码所在文件权限设置为apache即可:

chown -R apache:apache /var/www/html/wordpress/forTest

2.当php使用exec/system向python传递参数时,由于参数以空格划分,因此若所传递的参数为字符串且字符串带有空格,则应在传递此参数前为其加上双引号,则传递至python时才能将其视为一个字符串整体

3.当 php使用exec/system向python传递中文参数时,会报错utf8无法解码等错误,目前的解决方案为使用mysql数据库中转,暂未找到其他解决方案。。。 (PS: 可尝试此方法: PHP接收Python的传值 【php向python传值】)

参考链接

Related post

  1. hadoop框架概述

    2021-09-17

  2. Emacs for Java

    2023-01-16

  3. linux文件系统

    2020-11-27

  4. vi编译器查询手册

    2020-09-23

There are no comment yet.

COMMENT

Take a Coffee Break

Recommend post

  1. 常用工具指令

    2022-09-18

Category list

ABOUT

Welcome to FullStar, a captivating online destination where the realms of software development and personal reflections intertwine.

April 2025
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Life Logs

  1. 回首

    2023-07-14

Return Top