试图找出最好的方法,我得到了非常奇怪的结果。长话短说,我们把应用程序配置参数放在后端,这是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文件,因为后端在任何地方都使用它。
感谢。
答案 0 :(得分:1)
这看起来很像java .properties
文件。尽管有一些方法在线调用:
today = time.time()
但您可以将这些属性读作string
,您可以在此问题中找到有关阅读属性文件的一些帮助:code
加载完所有数据后,您必须使用代码评估行 - 希望您能通过键识别它们。我知道这只是一般性的想法,但我希望你可以自己继续前进。