我們使用connect.php中定義的字符串,但現在我們有一些啓用了silverilght的服務,它們使用IIS中的web.config作爲其連接字符串。IIS PHP使用來自web.config的連接字符串
因此,而不是在兩個地方有連接字符串,我可以從PHP訪問web.config中的一個?這也會使最終用戶更容易改變。
我們使用connect.php中定義的字符串,但現在我們有一些啓用了silverilght的服務,它們使用IIS中的web.config作爲其連接字符串。IIS PHP使用來自web.config的連接字符串
因此,而不是在兩個地方有連接字符串,我可以從PHP訪問web.config中的一個?這也會使最終用戶更容易改變。
是的,你可以。
段:
public function Load($xmlfile)
{
if (is_readable($xmlfile)) {
$config = $this->xml2array(simplexml_load_file($xmlfile));
}
我知道這是一個非常古老的線程,但最近我遇到了類似的問題。我只是想分享我的解決方案,無論誰需要它。它完全達到了我的目的,希望它能幫助你。
在我的web.config連接字符串節點的樣子:
<connectionStrings>
<add name="sqlDB" connectionString="Server=xxx.xxx.xxx.xxx; Database=db_name; User Id=sqlserver_user_name; password=sqlserver_password;Max Pool Size=2000;" providerName="System.Data.SqlClient" />
</connectionStrings>
我寫了下面的PHP代碼檢索SQL Server連接信息在PHP
<?php
// start get connection string from web.config
$xml = simplexml_load_file("../Web.config") or die("Error: Cannot create object");
//in my case web.config is in previous directory
$array = json_decode(json_encode((array) $xml), 1);
$server = "";
$database = "";
$user = "";
$password = "";
$fullString = ($xml->connectionStrings->add[0]["connectionString"]);
$strArr = explode(";", $fullString);
$arrCount = count($strArr);
$connArr[]="";
for($x=0;$x<$arrCount-1;$x++){
$aS = explode("=",$strArr[$x]);
$connArr+=array(strtolower(trim($aS[0])) => trim($aS[1]));
}
$server = $connArr["server"];
$database = $connArr["database"];
$user = $connArr["user id"];
$password = $connArr["password"];
// end get connection string from web.config
$connectionInfo = array("UID"=>$user,
"PWD"=>$password,
"Database"=>$database,
"CharacterSet" => "UTF-8");
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect($server, $connectionInfo);
?>
僅供參考使用:在我案例web.config和PHP文件在相同的域和相同的根目錄下。如果您在跨域環境中工作,則應首先考慮從遠程位置讀取web.config,但出於安全原因這不是一個明智的決定。
謝謝
這工作出色 – Burgi
很高興聽到布爾吉。 –