如何从python文件中使用PHP读取变量?

时间:2017-09-14 14:38:59

标签: php python

试图找出最好的方法,我得到了非常奇怪的结果。长话短说,我们把应用程序配置参数放在后端,这是python,前端PHP使用硬编码参数,我试图把它绑回到单个python文件,所以我不必更改多个重要的配置参数例如,部署到不同的服务器。

python文件(defaults.py):

import time

#------------------------------------------------------
#Processing Options
#------------------------------------------------------
perform_tests = False
today = time.time()

#------------------------------------------------------
#MySQL Config
#------------------------------------------------------
host = "somehostname.com"
port = 3526
user = "someuser"
pw = "somepass"
db = "someDB"
bulk = 500
table = "Some_table"

PHP代码尝试从中收集配置变量(主要测试代码):

<?php
    function db_connect() {
        $config_file = fopen("../modules/defaults.py", "r");
        if ($config_file) {
            while (($line = fgets($config_file)) !== false) {
                echo "<script>alert(". (string)$line. ");</script>";
                // process the line read.
                if(substr($line, 0, 4) === "host"){
                    //$servername = trim(explode("=",$line)[1]);
                    $servername = "somehostname.com";
                }
            }
            fclose($handle);
        }
        echo "<script>alert(". $servername. ");</script>";
        //$servername = "somehostname.com";
        $username = "someuser";
        $password = "somepass";
        $dbname = "someDB";
        $port = 3526;
        //Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        return $conn;
    }
?>

正如你所看到的,我正在通过python文件循环,试图用文件中的变量重新分配我的硬编码变量......那里有很多调试代码。

所以,当你运行它时,它将从文件中回复你的每一行...非常奇怪的结果是它没有警告整行(它警告“somehostname.com”,3526,“someuser “等等......它也没有警告导入时间线或注释掉的行。这对我来说很奇怪,我希望它能读取字符串作为字符串,但fgets看起来以一种非常奇怪的方式解释代码。

我想知道这里发生了什么,如果有更好的方法可以解决这个问题......不修改python文件,因为后端在任何地方都使用它。

感谢。

1 个答案:

答案 0 :(得分:1)

这看起来很像java .properties文件。尽管有一些方法在线调用:

today = time.time()

但您可以将这些属性读作string,您可以在此问题中找到有关阅读属性文件的一些帮助:code

加载完所有数据后,您必须使用代码评估行 - 希望您能通过键识别它们。我知道这只是一般性的想法,但我希望你可以自己继续前进。