精华内容
下载资源
问答
  • 因为有一部分程序是 Python 写的,所以需要 PHP 调用 Python 程序返回数据,使用 exec 返回的是乱码 $data = Geek程序员 $get = exec(/usr/bin/python3 main.py $data); 所以载调用 Python 程序之前需要...
  • PHP调用Python发送邮件

    2015-05-18 12:48:48
    1)程序功能:PHP调用Python发送邮件。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/45815453。 3)原创作品,出自"CleverCode的博客",本程序不得用于商业用途,仅做学习交流。 4)欢迎大家...
  • 浅谈php调用python文件

    2021-01-21 19:23:10
    关于PHP调用Python数据传输问题 这是以前大学时做项目出现的问题,现在把它挪上来,希望给遇到问题的未来大佬给出一些小的思路,请大佬们不要大意的帮我改正,如果出现问题或者有更好的解决方法,希望大家可以给出,...
  • 压缩包里面包含两个文件,一个是py文件,实现从中国天气网爬取近7天的天气情况,另外一个...实现调用python爬虫,并且解决爬取数据编码问题。注意事项:1.电脑要配置好python环境变量。2.用pip下载好爬虫需要的python包
  • PHP调用Python借口文件

    2014-01-01 23:42:14
    php调用python的借口程序,直接嵌入。
  • php调用shell的方法

    2021-01-20 00:57:06
    本文实例讲述了php调用shell的方法,分享给大家供大家参考。具体方法如下: 一、配置 查看php.ini中配置是否打开安全模式,主要是以下三个地方 safe_mode = (这个如果为off下面两个就不用管了) disable_functions =...
  • PHP调用Python和PHP向Python发送数据

    千次阅读 2019-06-12 11:36:47
    一、python文件位于项目中,非远程外部。 1、定义一个python测试文件 test.py #!/usr/bin/env python #-*- coding: UTF-8 -*- print "这是一个测试" ...$output = exec("python /home/vagrant/code/php...

    一、python文件位于项目中,非远程外部。

    1、定义一个python测试文件

    test.py
    
    #!/usr/bin/env python
    #-*- coding: UTF-8 -*-
    print "这是一个测试"

    2、定义一个url去访问一个php方法(我直接在laravel框架里测试的)

    $output = exec("python  /home/vagrant/code/php-dms/test.py");  // 1
    //        $output = shell_exec("python  /home/vagrant/code/php-dms/test.py"); // 2
    //        $output = system("python  /home/vagrant/code/php-dms/test.py"); // 3
    //        $output = passthru("python  /home/vagrant/code/php-dms/test.py"); // 4
    //        $handle = popen("python  /home/vagrant/code/php-dms/test.py",'r');
    //        $output = fread($handle,4096); // 5
            dump($output);exit;
    
    解析:
    exec ( string $command [, array &$output [, int &$return_var ]] ) : string
    
    备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。
    
    查看具体信息需要使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。
    例如:
    
    exec('ls 2>&1', $output, $return_val); 
    print_r($output); 
    
    exec参考链接:https://mp.csdn.net/postedit/91494115

     

    1、2、3、4、5 分别对应输出:

    总结:先说明一下,python在linux系统里是全局变量,所以执行shell可以直接调起python解释器去执行python文件。如果是windows,需要将python改为python.exe安装的地址。

    从结果来看:

    1、exec和shell_exec和popen差不多。

    2、system会自动输出结果,所以其实无需打印。

    3、passthru也是会自动输出结果,但不会将变量赋值。

    具体它们之间有何差异,重建线程还是覆盖原有线程等,在此不再赘述,自行查阅资料吧,不过我项目里用的最多的就是exec。

    参考:https://mp.csdn.net/postedit/91494115

     

    请求发送方式curl、stream流、socket等。

    二、PHP主动向python发送数据 socket

    python要主动向PHP发送数据,很简单,通过http方式调用接口即可(常见),而PHP要向python发送数据,则需要使用到php的socket相关功能(不常见)。

    /*socket收发数据
    @host(string) socket服务器IP
    @post(int) 端口
    @str(string) 要发送的数据
    @back 1|0 socket端是否有数据返回
    返回true|false|服务端数据
    */
    function sendSocketMsg($host,$port,$str,$back=0){
        $socket = socket_create(AF_INET,SOCK_STREAM,0);
        if ($socket < 0) return false;
        $result = @socket_connect($socket,$host,$port);
        if ($result == false)return false;
        socket_write($socket,$str,strlen($str));
        
        if($back!=0){
            $input = socket_read($socket,1024);
            socket_close ($socket);    
            return $input;
        }else{
            socket_close ($socket);    
            return true;    
        }    
    }

    socker_read的第二个参数用以指定读入的字节数,你可以通过它来限制从客户端获取数据的大小。
        注意:socket_read函数会一直读取壳户端数据,直到遇见\n,\t或者\0字符,PHP脚本把这些字符看做是输入的结束符。

    附:php的socket编程

    三、PHP主动向python发送数据 stream流

    可以使用 file_get_contents() 发送 HTTP POST 请求,使用一个流上下文对象即可实现。学院君stream

    //测试已实现数据发送
    <?php
    $requestBody = '{"username":"nonfu"}';
    $context = stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => "Content-Type: application/json;charset=utf-8;\r\nContent-Length: " . mb_strlen($requestBody),
            'content' => $requestBody
        ]
    ]);
    $response = file_get_contents('https://my-api.com/users', false, $context);
    ?>
    
    //这个是php.net的example
    <?php
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: en\r\n" .
                  "Cookie: foo=bar\r\n"
      )
    );
    
    $context = stream_context_create($opts);
    
    /* Sends an http request to www.example.com
       with additional headers shown above */
    $fp = fopen('http://www.example.com', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>
    
    
    //最后这个请忽视
    <?php
    $fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        while (!feof($fp)) {
            echo fgets($fp, 1024);
        }
        fclose($fp);
    }
    ?>

    扩展:

    ppython :传送门

    开源项目既是结合使用PHP和Python两种语言,取其所长、补其所短,面向企业WEB领域的开发技术。此技术可以理解为PHP和Python相结合的 技术,也可称为PHP和Python混合编程技术,或者PHP调用Python服务的技术,也有人习惯称之为前台PHP后台Python的技术框架。 

    展开全文
  • Windows下php执行函数调用python 三种system(),passthru(),exec()
  • PHP调用shell命令

    千次阅读 2019-05-09 17:16:12
    因为想用php调用python脚本,于是想到可以利用php调用shell命令的方法实现。 php版本:php7.0 三种方法 1.system system — 执行外部程序,并且显示输出 函数使用方法 system ( string $command [, int &$...

    PHP调用shell命令

    前言

    因为想用php调用python脚本,于是想到可以利用php调用shell命令的方法实现。
    php版本:php7.0

    三种方法

    1.system

    system — 执行外部程序,并且显示输出

    函数使用方法

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

    example:

    <?php
    $last_line = system('ls',$return_val);
    echo(“last line:”.$last_line);
    echo(“return:”.$return_val);
    

    说明:执行了shell命令,并直接输出其返回结果;
    函数的返回结果为shell命令输出内容的最后一行;
    $return_val为shell命令的返回结果。

    2.exec

    exec — 执行一个外部程序

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

    example:

    <?php
    exec('ls',$out);
    var_dump($out);
    

    说明:exec函数返回结果为shell命令输出内容的最后一行;
    $output为shell命令输出内容;
    $return_val为shell命令返回结果;

    3.passthru

    passthru — 执行外部程序并且显示原始输出

    passthru ( string $command [, int &$return_var ] ) : void
    

    example:

    <?php
    passthru('ls',$res);
    echo($res);
    

    说明:当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器

    展开全文
  • php调用python程序的五种方法及详解

    千次阅读 2019-10-23 10:26:42
    'C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe index.py 2>&1' , $output , $return_val ) ; print_r ( $output ) ; exit ; $output = exec ( "C:/Users/Administrator/...

    方法一

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

    备注:
    exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。
    查看具体信息需要使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。

    //例如:
    
    exec('C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py 2>&1', $output, $return_val);
    print_r($output);exit; 
    $output = exec("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py");  
    

    方法二

    $output = shell_exec("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py"); // 2
    print_r($output);exit;
    

    方法三

    $output = system("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py"); // 3
    print_r($output);exit;
    

    方法四

    $output = passthru("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py"); // 4
    print_r($output);exit;
    

    方法五

    $handle = popen("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe  index.py",'r');
    $output = fread($handle,4096); // 5
    print_r($output);exit;
    

    备注:
    1、exec和shell_exec和popen差不多。
    2、
    system会自动输出结果,所以其实无需打印。
    passthru也是会自动输出结果,但不会将变量赋值
    直接打印 $ret表示连接状态 $cmd表示结果但直接打印 1表示未连接0表示已连接

    展开全文
  • 问题:自己通过命令行执行python正常,但通过php调用就没有反应。

    问题:自己通过命令行执行python正常,但通过php调用就没有反应。


    解决方法
    1、首先检查一下php有没有执行权限,简单粗暴的:

    sudo chmod 777 xxx.php
    

    2、Python如果有中文返回,似乎需要额外操作。可以先去掉中文排除掉其他原因,也可以尝试以下操作:
    在python文件头部加上

    import codecs
    sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())
    

    或者,php脚本中在调用python命令的地方加上:

    // 设置字符集,重要!!!! 非常重要。
    $set_charset = 'export LANG=en_US.UTF-8;';
    $cmd = "python3  main.py gen  --model-path='checkpoints/tang_199.pth' --pickle-path='tang.npz' --start-words='".$start_words."' --prefix-words='".$prefix_words."' --use-gpu=False  --acrostic='True'";
    //echo $cmd;
    $poem = exec( $set_charset.$cmd, $output, $res );
    

    3、如果不行,则将php调用语句的最后面加上2>&1,如

    echo shell_exec("python3 xxx.py 2>&1");
    

    这样,再去网页执行php时候,就会显示具体的错误原因

    4、如果是普通语法错误,修改即可;但如果提示No module,是因为你当前登录账户(非root)的环境,跟web的环境不一样,所以你通过ssh安装的库,在web下找不到。可以通过加sudo -H来解决,如:

    sudo -H pip3 install pyDes
    

    欢迎关注公众号:xfxuezhang
    在这里插入图片描述

    展开全文
  • <?php header("Content-Type: text/html; charset=gbk"); //方法一 保存在$output //(1) /* ... $output=exec('C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe index....
  • php调用python文件

    千次阅读 2019-03-14 19:00:42
    关于PHP调用Python数据传输问题 这是以前大学时做项目出现的问题,现在把它挪上来,希望给遇到问题的未来大佬给出一些小的思路,请大佬们不要大意的帮我改正,如果出现问题或者有更好的解决方法,希望大家可以给出...
  • 使用shell调用php脚本

    2018-05-03 17:25:56
    在linux系统下安装好的php运行环境,使用shell调用php脚本,附送工具
  • <p>I have Python script with a fucntion. I want to call this function from PHP while passing two parameters to the ... $output = shell_exec("myscript.py '$varone' 'vartwo' "); </code></pre> </div>
  • php调用python服务

    2019-07-20 15:52:00
    php调用python服务 侃侃:公司用的php的popen以命令的形式调用python,首先说说这样做的缺点。 php执行命令行调用python的缺点 popen('python test.py [参数]', 'r'); 缺点一:windows默认的是gbk编码,当...
  • 因为不太会使用python的一些诸如flask和django等Web应用框架,反而PHP使用的很熟练,所以我在做一些小功能小项目的时候,都是使用PHP语言作为接口,将服务端和移动端、浏览器端连接起来。 具体操作流程是: 发送请求...
  • PHP 调用 Python脚本输出

    千次阅读 2019-06-17 11:02:33
    调用过程中,如果需要传参,而且参数带中文的,需要先在PHP中转码,然后再传递,否则无法执行成功,不知道什么原因。 python 中接收参数后再转回中文处理,如果有返回值给PHP,中文的话会乱码。 PHP Code: <?php...
  • 一:php调用python脚本 并传入参数,并接收返回值  php调用python脚本可以用 system(),exec()和passthru() 函数,本篇文章主要介绍exec 函数   exec有三个参数,第一个参数为一个字符串,包括三个子串,起...
  • php调用python结果 $out = shell_exec("python *.py"); print($out); out为空无输出,但其他另一个py文件可正常运行有输出。 php页面也无错误提示,在页面前加erro_reporting(E_ALL),也无反应。 检查py文件并...
  • python利用phprpc进行远程调用
  • win 10 php调用python脚本

    千次阅读 2018-02-07 10:17:10
    使用php作为后台语言的网站可能会有调用python等脚本语言的需求,比如在做数据处理。 现在假设你已经有了一个可以执行php脚本和解释python脚本的服务器环境 下面是一个简单的示例: test.py test.php ...
  • ![图片说明](https://img-ask.csdn.net/upload/201812/04/1543903547_11455.png) ![图片说明](https://img-ask.csdn.net/upload/201812/04/1543903556_970125.png) ![图片说明]...
  • 语言选择原因: 1、对PHP和Python都不精通; 2、服务器采用了Apace+PHP+MySQL(XAMPP),后台使用Python的话需要使用新框架... PHP调用Python测试: 在XAMPP网站根目录下建立:testphppython.php、testphppython...
  • PHP调用Python失败的解决办法

    千次阅读 2016-12-16 10:51:57
    假设有文件:php_test.php python_test.py 在php文件中运行Python: exec("python python_test.py", $array, $ret); 如果运行Python出错并不能保存在数组array中,因此应该把标准错误重定向到文件中,以上代码改写...
  • php 调用 python脚本的方法

    千次阅读 2017-04-05 17:09:10
    需求产生原因:某些使用php作为后台语言的网站可能会有调用python等脚本语言的需求.例如我最近在做的数据处理工作 ... 这时,就需要php调用python等脚本辅助处理. 解决办法:php提供了许多调用其他脚本或程序的方法,
  • php 调用python代码

    2021-03-15 16:51:16
    1.推荐是python 运行起来一个服务,比如flask 服务然后通过访问网页地址的方式调用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,240
精华内容 45,696
关键字:

php调用python

python 订阅