【发布时间】:2015-03-16 04:16:02
【问题描述】:
我有一个从saplogon.ini 文件中读取的主机名。
现在,我将这个文件加载到一个数组中,比如$lines。
当我通过$hostname = $lines[10]读取主机名时;
我无法登录,但如果我将值硬编码为$line = "host name";,然后将其分配给主机名$hostname = $line,那么它工作正常。
任何机构对此有任何解决方案吗?为了使我的程序动态,我需要从 saplogon.ini 中读取这个值并使用 explode 来获得所需的名称。
这是我的代码的 sn-p:
$pieces = explode('=', $line, 2);
elseif(!isset($ASHOST)) $ASHOST = $pieces[1];
elseif(!isset($SYSNO)) $SYSNO = $pieces[1];
有趣的是它不会对 $SYSNO 造成任何问题,尽管我通过相同的逻辑得到它。
这是我的 saplogon.ini sn-p
[Server]
Item1=cesdsbop01.vco.bpcoco
Item2=192.168.1.198
Item3=cesapplpt1
Item4=cesderlpt01.vco.bpcoco
Item5=cesderlpt03.vco.bpcoco
Item5=00
Item6=cesperlpt01.vco.bpcoco
Item7=cesqerlpt01.vco.bpcoco
Item8=cesderlpt02.vco.bpcoco
Item9=cespilpt.vco.bpcoco
[Database]
Item1=00
Item2=01
Item3=00
Item4=00
Item5=00
Item6=00
Item7=00
Item8=00
Item9=01
不起作用,虽然我试图做同样的事情,但也添加了 FILE_IGNORE_NEW_LINES。我尝试了主机名的IP地址,同样的事情。对不起,我不知道如何格式化下面的代码。
$line = "Item5=cesderlpt03.vco.bpcoco";
$CLIENT = "210";
$system = "Item5";
$a["USER"] = "Adarsh";
$handle = "saplogon.ini";
$lines = file($handle, FILE_IGNORE_NEW_LINES);
$line = $lines[0];
echo $lines[0];
$pieces = explode('=', $line, 2);
if(!isset($ASHOST)) { $ASHOST = $pieces[1];}
$line = $lines[1];
$pieces = explode('=', $lines[1], 2);
if(!isset($SYSNO)){ $SYSNO = $pieces[1];}
function sap_login($ASHOST, $SYSNO, $CLIENT, $USER)
{
$l["ASHOST"] = $ASHOST; //"cesderpap03.uhi.amerco";
$l["SYSNR"] = $SYSNO;
$l["CLIENT"] = $CLIENT;
$l["USER"] = $USER;
$l["PASSWD"] = "adarsh123";
if (isset($GWHOST)) $l["GWHOST"] = $GWHOST; //
if (isset($GWSERV)) $l["GWSERV"] = $GWSERV;
$l["MSHOST"] = "";
$l["R3NAME"] = "ECD";
$l["GROUP"] = "";
$l["LANG"] = "EN";
$l["TRACE"] = ""; //if (isset($TRACE)) $TRACE;
$l["LCHECK"] = ""; //if (isset($LCHECK)) $LCHECK;
$l["CODEPAGE"] = "1160"; //if (isset($CODEPAGE)) $CODEPAGE;
$sap = @saprfc_open ($l);
saprfc_set_code_page ($sap,$l["CODEPAGE"]);
if(! $sap)
{
echo saprfc_error($sap);
}
else {echo "connected";}
}
sap_login(&$ASHOST, &$SYSNO, &$CLIENT, &$a["USER"])
?>
这段代码让我登录到 SAP。这就是我想要达到的目标。如果我不选择这样做,$line = $lines[0]; 我的代码可以正常工作,因为它使用的是第一行中的硬编码值$line = "Item5=cesderlpt03.vco.bpcoco";
所以根据项目的名称,我需要放置项目的行。例如,如果我选择 Item5,我想检索文本 Item5=cesderlpt03.vco.bpcoco 所在的 .ini 文件行。
【问题讨论】:
-
使用 saplogon.ini 的内容进行编辑
-
我发布了我的答案,如果您使用更多代码进行编辑,我可以确切地看到您想要做什么
-
使用适合您的整个代码进行编辑并说明您想要获得什么
-
如果你的代码工作你想要什么?
-
我的硬编码代码不是动态代码。我想让我的代码更灵活,这样如果 saplogon.ini 发生更改,我就不必在以后添加值。