PHP如何使用从Python脚本发布的数据?

时间:2018-01-25 18:56:11

标签: php python post

我有一个python脚本,它对我的​​php页面(json格式)执行了pa POST请求。发布后,我从响应中看到数据是通过python脚本中的print(r.text)以PHP发送的。

问题在于我无法使用PHP方面的数据 - 我无法打印或写入文件等。

我在这里做错了什么?

python脚本的一部分:

        data_json = {
            "measurementTime"   : first_line.split(',')[0],
            "windSpeed"         : first_line.split(',')[1],
            "windGust"          : first_line.split(',')[2],
            "windSpeedCount"    : first_line.split(',')[3],
            "rain"              : first_line.split(',')[12],
            "windDirection"     : first_line.split(',')[13],
            "inputVoltage"      : first_line.split(',')[14],
            "solarRadiation"    : first_line.split(',')[15],
            "temperature"       : first_line.split(',')[16],
            "windSpeed"         : first_line.split(',')[18],
            "humidity"          : first_line.split(',')[19],
            "barPressure"       : first_line.split(',')[20]
        }

        url = 'http://localhost/index.php'

        r = requests.post(url, data=json.dumps(data_json))

        print(r.text)   # here I can see that data has been sent
        print(r.status_code)

PHP(index.php):

    <?php
        $json = file_get_contents('php://input');
        print_r($json);
    ?>

Python脚本输出:

    ...
    <body>

        {"measurementTime": "2018-01-25 17:52:25", "windSpeed": "9.0", "windGust": "0.0", "windSpeedCount": "0", "rain": "1.50", "windDirection": "0", "inputVoltage": "13.51", "solarRadiation": "", "temperature": "0.00", "humidity": "87.5", "barPressure": "1004.473"}

    </body>
</html>

1 个答案:

答案 0 :(得分:0)

  

问题是我无法使用PHP方面的数据 - 我不能   打印或写入文件等

这是一个将python json写入文件的PHP脚本:

<?php

file_put_contents(
    "../tmp/data.txt", 
    file_get_contents('php://input') . "\n"
);

echo "Got it";

?>

我遇到的唯一问题是有权写入文件。我正在使用apache2,所以我在apache2目录下创建了一个tmp目录,并且我让所有用户都能够写入目录:

/usr/local/apache2/$ mkdir tmp
/usr/local/apache2/$ ls -al
...
...
drwxr-xr-x    2 7stud  admin    64 Jan 25 13:23 tmp

/usr/local/apache2$ chmod a+w tmp     #all+write, where all=user,group,other
/usr/local/apache2$ ls -al
...
...
drwxrwxrwx    2 7stud  admin    64 Jan 25 13:23 tmp

运行以下python脚本后:

import requests
import json

data_json = {
    "measurementTime"   : 10,
    "windSpeed"         : 20
}

url = 'http://localhost:8080/php1.php'
r = requests.post(url, data=json.dumps(data_json))

print(r.text)   
print(r.status_code)

在python窗口中,我看到了:

  

得到了   200

在apache2窗口中,我可以看到json被写入文件:

/usr/local/apache2$ cat tmp/data.txt
{"measurementTime": 10, "windSpeed": 20}

这是一个使用json数据的php脚本:

<?php

$json = file_get_contents('php://input');
$obj = json_decode($json);

$sum = $obj->measurementTime + $obj->windSpeed;
echo "The sum was: $sum";

?>

在python窗口中,我看到:

  总和是:30
  200