PHP之 执行python ( linux )

注意事项

1 php 端在使用 exec 调用 python外部程序时,必须使用
$set_charset = ‘export LANG=en_US.UTF-8;’ 加在调用的命令前面。否则报错 或 返回结果与终端执行python返回不一致 示例如下:

(1) Linux版本

$cmd = "python  test.py  {$djdm}";

$set_charset = 'export LANG=en_US.UTF-8;';

exec($set_charset.$cmd,$res_data,$res_state);

(2) Window版本 不能使用 $set_charset = ‘export LANG=en_US.UTF-8;’ 加在调用的命令前面.

$cmd = "python ".PLUG_IN_DJBREAKS." {$djdm}";

exec($cmd,$res_data,$res_state)

php

执行命令

function test1(Request $request){
    header("content-type:text/html;charset=utf-8");
    $param = $request->param('');
  
    // $inputs = array(    
    //     'video_title' => "斗罗大陆",
    //     'video_type' => '1',
    //     'video_ji' => '1',
    // );
    if($param['plat'] == 1){
        $cmd = "python3 ".getcwd()."/python/tx_linux.py".' '.$param['name'].' '.$param['Type'].' '.$param['ji']; # 携带参数
    }else if($param['plat'] == 2){
        $cmd = "python3 ".getcwd()."/python/aqy_linux.py".' '.$param['name'].' '.$param['Type'].' '.$param['ji']; # 携带参数
    }
    
    
    // $data = shell_exec( $set_charset.$cmd, $output, $res );
    
    // $data = passthru($cmd);//等同于命令`python python.py 参数`,并接收打印出来的信息
    // $data = shell_exec("$cmd 2>&1");  // 这样执行,打印报错信息
    // $data = shell_exec($cmd);
    

    $set_charset = 'export LANG=en_US.UTF-8;';  // 必要,否则报错 linux
    
    $data = shell_exec($set_charset.$cmd);

    
    $qian = array(" "," ","\t","\n","\r");
    $data = str_replace($qian, '', $data);
    

    // var_dump($cmd);
    // var_dump($data);

    if($data){
        return json(['code'=>200,'data'=>$data]);
    }else{
        return json(['code'=>403]);
    }


}

python

接收参数

import sys

name = sys.argv[1]  #接收参数

·· 返回数据

  # json_str =json.dumps(last_host);  #返回给php
  # print(json_str); 

你可能感兴趣的:(python,linux,python,php)