Subversion Repositories php-qbpwcf

Rev

Rev 207 | Rev 220 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 207 Rev 218
Line 4149... Line 4149...
4149
 
4149
 
4150
			#回傳結果
4150
			#回傳結果
4151
			return $result;
4151
			return $result;
4152
 
4152
 
4153
			}#if end
4153
			}#if end
4154
 
-
 
4155
		#初始化儲存檢查檔案是否存在的腳本
-
 
4156
		$cmd="";
-
 
4157
 
4154
		
4158
		#設定要檢查的檔案
4155
		#設定要檢查的檔案
4159
		$cmd=$cmd."target=".\escapeshellarg($conf["fileName"]).";";
4156
		$target=\escapeshellarg($conf["fileName"]);
-
 
4157
				
-
 
4158
		#$cmd="if [ -e ".$target." ]; then echo \"found\" ; else echo \"not found\"; fi;";
-
 
4159
 
-
 
4160
		#debug
-
 
4161
		#var_dump(__LINE__,$cmd);
4160
 
4162
 
4161
		#判斷檔案是否存在並印出 $target found 或 $target not found
4163
		#要執行的指令
4162
		#$cmd=$cmd."if [ -e \${target} ]; then echo \${target} found ; else echo \${target} not found; fi;";
4164
		$cmd="if";
4163
 
4165
 
4164
		#執行腳本
4166
		#透過執行腳本賴判斷檔案是否存在並印出 "found" 或 "not found".
4165
		#函式說明:
4167
		#函式說明:
4166
		#呼叫shell執行系統命令,並取得回傳的內容.
4168
		#呼叫shell執行系統命令,並取得回傳的內容.
4167
		#回傳的結果:
4169
		#回傳的結果:
4168
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4170
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4169
		#$result["error"],錯誤訊息陣列.
4171
		#$result["error"],錯誤訊息陣列.
Line 4178... Line 4180...
4178
		$conf["external::callShell"]["command"]=$cmd;
4180
		$conf["external::callShell"]["command"]=$cmd;
4179
		#$conf["fileArgu"],字串,變數__FILE__的內容.
4181
		#$conf["fileArgu"],字串,變數__FILE__的內容.
4180
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
4182
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
4181
		#可省略參數:
4183
		#可省略參數:
4182
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
4184
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
4183
		#$conf["external::callShell"]["argu"]=array("if","[","-e","\${target}","]",";","then","echo","\${target}","found",";","else","echo","\${target}","not founnd",";","fi",";");
4185
		#$conf["external::callShell"]["argu"]=array("[","-e","\${target}","]",";","then","echo","\${target}","found",";","else","echo","\${target}","not founnd",";","fi",";");
4184
		$conf["external::callShell"]["argu"]=array("if","[","-e","\${target}","]",";","then","echo","found",";","else","echo","not founnd",";","fi",";");
4186
		$conf["external::callShell"]["argu"]=array("[","-e",$target,"]",";","then","echo","found",";","else","echo","not founnd",";","fi",";");
4185
		#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
4187
		#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
4186
		#$conf["enablePrintDescription"]="true";
4188
		#$conf["enablePrintDescription"]="true";
4187
		#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
4189
		#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
4188
		#$conf["printDescription"]="";
4190
		#$conf["printDescription"]="";
4189
		#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
4191
		#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
Line 4244... Line 4246...
4244
			#回傳結果
4246
			#回傳結果
4245
			return $result;
4247
			return $result;
4246
 
4248
 
4247
			}#if end
4249
			}#if end
4248
 
4250
 
-
 
4251
 		#debug
-
 
4252
 		#var_dump(__LINE__,$callShell);
-
 
4253
 
4249
		#儲存要執行的指令
4254
		#儲存要執行的指令
4250
		$result["cmdStr"]=$callShell["cmd"];
4255
		$result["cmdStr"]=$callShell["cmd"];
4251
		
4256
		
4252
		#用陣列儲存的指令與參數資訊
4257
		#用陣列儲存的指令與參數資訊
4253
		$result["escapedCmdArray"]=$callShell["noEscaped"];
4258
		$result["escapedCmdArray"]=$callShell["noEscaped"];
Line 4301... Line 4306...
4301
		$result["error"]=$callShell;
4306
		$result["error"]=$callShell;
4302
 
4307
 
4303
		#回傳結果
4308
		#回傳結果
4304
		return $result;
4309
		return $result;
4305
 
4310
 
4306
		}#function checkFileExist Exist
4311
		}#function checkFileExist end
4307
 
4312
 
4308
	/*
4313
	/*
4309
	#函式說明:
4314
	#函式說明:
4310
	#透過lsblk指令的輸出取得已經掛載的blk.
4315
	#透過lsblk指令的輸出取得已經掛載的blk.
4311
	#回傳結果:
4316
	#回傳結果:
Line 7457... Line 7462...
7457
		#用shell檢查檔案是否存在,可以指定查詢時用的身份.
7462
		#用shell檢查檔案是否存在,可以指定查詢時用的身份.
7458
		#回傳的結果:
7463
		#回傳的結果:
7459
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
7464
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
7460
		#$result["function"],當前執行的函式名稱.
7465
		#$result["function"],當前執行的函式名稱.
7461
		#$result["error"],錯誤訊息陣列.
7466
		#$result["error"],錯誤訊息陣列.
7462
		#$result["founded"],"true"代表有找到檔案,"false"代表沒有找到檔案.
7467
		#$result["founded"],"true"代表有找到檔案,"false"代表沒有找到檔案,"?"代表沒有執行指令.
-
 
7468
		#$result["cmdStr"],查詢檔案是否存在的指令與參數字串.
-
 
7469
		#$result["escapedCmdArray"],陣列,儲存重新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu")與兩者組合的一維陣列(key為"array").
7463
		#必填參數:
7470
		#必填參數:
7464
		#$conf["fileName"],字串,要檢查的檔案名稱.
7471
		#$conf["fileName"],字串,要檢查的檔案名稱.
7465
		$conf["cmd::checkFileExist"]["fileName"]=$conf["file"];
7472
		$conf["cmd::checkFileExist"]["fileName"]=$conf["file"];
7466
		#可省略參數:
7473
		#可省略參數:
7467
		#$conf["username"],字串,要用哪個身份來檢查檔案是否存在,預設不使用.
7474
		#$conf["username"],字串,要用哪個身份來檢查檔案是否存在,預設不使用.
Line 7473... Line 7480...
7473
		#備註:
7480
		#備註:
7474
		#該函式若使用可省略參數,則無法在web環境下運行
7481
		#該函式若使用可省略參數,則無法在web環境下運行
7475
		$checkFileExist=cmd::checkFileExist($conf["cmd::checkFileExist"]);
7482
		$checkFileExist=cmd::checkFileExist($conf["cmd::checkFileExist"]);
7476
		unset($conf["cmd::checkFileExist"]);
7483
		unset($conf["cmd::checkFileExist"]);
7477
 
7484
 
-
 
7485
		#debug
-
 
7486
		#var_dump(__LINE__,$checkFileExist);
-
 
7487
 
7478
		#如果檢查檔案是否存在失敗
7488
		#如果檢查檔案是否存在失敗
7479
		if($checkFileExist["status"]==="false"){
7489
		if($checkFileExist["status"]==="false"){
7480
 
7490
 
7481
			#設置執行不正常
7491
			#設置執行不正常
7482
			$result["status"]="false";
7492
			$result["status"]="false";
Line 7526... Line 7536...
7526
		#$conf["enablePrintDescription"],字串陣列,執行各個$conf["command"]時是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7536
		#$conf["enablePrintDescription"],字串陣列,執行各個$conf["command"]時是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7527
		#$conf["enablePrintDescription"]=array("false");
7537
		#$conf["enablePrintDescription"]=array("false");
7528
		#$conf["printDescription"],字串陣列,執行各個$conf["command"]前要印出來的的文字,預設為$conf["command"]的內容,其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7538
		#$conf["printDescription"],字串陣列,執行各個$conf["command"]前要印出來的的文字,預設為$conf["command"]的內容,其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7529
		#$conf["printDescription"]=array("");
7539
		#$conf["printDescription"]=array("");
7530
		#$conf["escapeshellarg"],字串陣列,執行各個$conf["command"]時是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false",其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7540
		#$conf["escapeshellarg"],字串陣列,執行各個$conf["command"]時是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false",其數量須與$conf["command"]的元素數量相同,若只有一個元素,則代表是每個$conf["command"]執行時都用此參數.
7531
		$conf["external::callShell"]["escapeshellarg"]=array("true");
7541
		$conf["external::callShellMulti"]["escapeshellarg"]=array("true","true","true");
7532
		#$conf["username"],陣列字串,每個指令要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
7542
		#$conf["username"],陣列字串,每個指令要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
7533
		$conf["external::callShell"]["username"]=$conf["username"];
7543
		$conf["external::callShellMulti"]["username"]=array($conf["username"],$conf["username"],$conf["username"]);
7534
		#$conf["password"],陣列字串,每個指令與$conf["username"]搭配的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
7544
		#$conf["password"],陣列字串,每個指令與 $conf["username"] 搭配的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
7535
		$conf["external::callShell"]["password"]=$validPasswd;
7545
		$conf["external::callShellMulti"]["password"]=array($validPasswd,$validPasswd,$validPasswd);
7536
		#$conf["useScript"],字串,每個指令的執行是否要啟用Linux的script指令來記錄輸出,"true"代表要;"false"代表不要,預設為"false".
7546
		#$conf["useScript"],字串,每個指令的執行是否要啟用Linux的script指令來記錄輸出,"true"代表要;"false"代表不要,預設為"false".
7537
		#$conf["useScript"]="";
7547
		#$conf["useScript"]="";
7538
		#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 ".qbpwcf_tmp/external/callShell/".
7548
		#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 ".qbpwcf_tmp/external/callShell/".
7539
		#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
7549
		#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
7540
		#$conf["inBackGround"],字串,每個指令的執行是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用";"區隔的多個指令將會出錯.
7550
		#$conf["inBackGround"],字串,每個指令的執行是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用";"區隔的多個指令將會出錯.
Line 7548... Line 7558...
7548
		#備註:
7558
		#備註:
7549
		#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行.
7559
		#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行.
7550
		$callShellMulti=external::callShellMulti($conf["external::callShellMulti"]);
7560
		$callShellMulti=external::callShellMulti($conf["external::callShellMulti"]);
7551
		unset($conf["external::callShellMulti"]);
7561
		unset($conf["external::callShellMulti"]);
7552
 
7562
 
-
 
7563
		#debug
-
 
7564
		#var_dump(__LINE__,$callShellMulti);
-
 
7565
 
7553
		#如果複製檔案失敗
7566
		#如果複製檔案失敗
7554
		if($callShellMulti["status"]==="false"){
7567
		if($callShellMulti["status"]==="false"){
7555
 
7568
 
7556
			#設置執行不正常
7569
			#設置執行不正常
7557
			$result["status"]="false";
7570
			$result["status"]="false";