一、python代码文件

python的文件名为:has.py

import sys

param_cont = sys.argv  # PHP传递过来的参数,以列表的形式
param_num = len(sys.argv)  # PHP传递过来的参数总数量
filename = sys.argv[0]  # 该python文件的文件名
v1 = sys.argv[1]  # php传过来的第一个参数
v2 = sys.argv[2]  # php传过来的第二个参数
v3 = sys.argv[3]  # php传过来的第三个参数
res = {
       '文件名':filename,
       '第一个参数':v1,
       '第二个参数':v2,
       '第三个参数':v3,
       '参数':param_cont,
       '参数数量':param_num
       }

print(res)  # 这里将输出到PHP文件中的$Array里面去

二、PHP正确执行的代码

$var = 6;
$var1 = 12;
$var2 = 24;

//exec函数第一个参数是执行的命令,第二个参数是执行的结果,第三个参数是执行的状态。
$res = exec("D:\python\python C:\phpStudy\WWW\\need\has.py $var $var1 $var2", $Array, $ret);
echo '<pre>';
print_r($res);//返回的json字符串
print_r($Array);//返回的是一个数组
print_r($ret);//返回int类型的状态码;其中0表示成功,1表示失败

/*输出结果

{'文件名': 'C:\\phpStudy\\WWW\\need\\has.py', '第一个参数': '6', '第二个参数': '12', '第三个参数': '24', '参数': ['C:\\phpStudy\\WWW\\need\\has.py', '6', '12', '24'], '参数数量': 4}

Array
(
    [0] => {'文件名': 'C:\\phpStudy\\WWW\\need\\has.py', '第一个参数': '6', '第二个参数': '12', '第三个参数': '24', '参数': ['C:\\phpStudy\\WWW\\need\\has.py', '6', '12', '24'], '参数数量': 4}
)

0

*/

三、PHP错误执行的代码

获取错误信息

$var = 6;
$var1 = 12;
$var2 = 24;
$res = exec("D:\python\pyuthon C:\phpStudy\WWW\\need\has.py 2>&1 $var $var1 $var2", $Array, $ret);
echo '<pre>';
var_dump($res);//返回的json字符串
print_r($Array);//返回的是一个数组
print_r($ret);//返回int类型的状态码;其中0表示成功,1表示失败

//将python写成pyuthon,会提示找不到该命令的信息
/*执行结果

string(14) "或批处理文件。"

Array
(
    [0] => 'D:\python\pyethon' 不是内部或外部命令,也不是可运行的程序
    [1] => 或批处理文件。
)

1