Subversion Repositories php-qbpwcf

Rev

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

Rev 3 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2024 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
11
    it under the terms of the GNU General Public License as published by
Line 28... Line 28...
28
提供fuse相關功能的類別.
28
提供fuse相關功能的類別.
29
備註:
29
備註:
30
無.
30
無.
31
*/
31
*/
32
class fuse{
32
class fuse{
33
	
33
 
34
	/*
34
	/*
35
	#函式說明:
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 43... Line 43...
43
	#$arguments,陣列,為呼叫方法時所用的參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#參考資料:
44
	#參考資料:
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
46
	*/
46
	*/
47
	public function __call($method,$arguments){
47
	public function __call($method,$arguments){
48
		
48
 
49
		#取得當前執行的函式
49
		#取得當前執行的函式
50
		$result["function"]=__FUNCTION__;
50
		$result["function"]=__FUNCTION__;
51
		
51
 
52
		#設置執行不正常
52
		#設置執行不正常
53
		$result["status"]="false";
53
		$result["status"]="false";
54
		
54
 
55
		#設置執行錯誤
55
		#設置執行錯誤
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
57
		
57
 
58
		#設置所丟入的參數
58
		#設置所丟入的參數
59
		$result["error"][]=$arguments;
59
		$result["error"][]=$arguments;
60
		
60
 
61
		#回傳結果
61
		#回傳結果
62
		return $result;
62
		return $result;
63
		
63
 
64
		}#function __call end
64
		}#function __call end
65
		
65
 
66
	/*
66
	/*
67
	#函式說明:
67
	#函式說明:
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
69
	#回傳結果:
69
	#回傳結果:
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 75... Line 75...
75
	#$arguments,陣列,為呼叫方法時所用的參數.
75
	#$arguments,陣列,為呼叫方法時所用的參數.
76
	#參考資料:
76
	#參考資料:
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
78
	*/
78
	*/
79
	public static function __callStatic($method,$arguments){
79
	public static function __callStatic($method,$arguments){
80
		
80
 
81
		#取得當前執行的函式
81
		#取得當前執行的函式
82
		$result["function"]=__FUNCTION__;
82
		$result["function"]=__FUNCTION__;
83
		
83
 
84
		#設置執行不正常
84
		#設置執行不正常
85
		$result["status"]="false";
85
		$result["status"]="false";
86
		
86
 
87
		#設置執行錯誤
87
		#設置執行錯誤
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
89
		
89
 
90
		#設置所丟入的參數
90
		#設置所丟入的參數
91
		$result["error"][]=$arguments;
91
		$result["error"][]=$arguments;
92
		
92
 
93
		#回傳結果
93
		#回傳結果
94
		return $result;
94
		return $result;
95
		
95
 
96
		}#function __callStatic end
96
		}#function __callStatic end
97
	
97
 
98
	/*
98
	/*
99
	#函式說明:
99
	#函式說明:
100
	#卸載已掛載的目錄
100
	#卸載已掛載的目錄
101
	#回傳結果:
101
	#回傳結果:
102
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
102
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 113... Line 113...
113
	#無.
113
	#無.
114
	#備註:
114
	#備註:
115
	#只能在command line下運行.必須用系統帳戶才能卸載
115
	#只能在command line下運行.必須用系統帳戶才能卸載
116
	*/
116
	*/
117
	public static function umount(&$conf){
117
	public static function umount(&$conf){
118
		
118
 
119
		#初始化要回傳的結果
119
		#初始化要回傳的結果
120
		$result=array();
120
		$result=array();
121
		
121
 
122
		#設置當前執行的函式
122
		#設置當前執行的函式
123
		$result["function"]=__FUNCTION__;
123
		$result["function"]=__FUNCTION__;
124
		
124
 
125
		#函式說明:
125
		#函式說明:
126
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
126
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
127
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
127
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
128
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
128
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
129
		#$result["function"],當前執行的函式名稱.
129
		#$result["function"],當前執行的函式名稱.
Line 136... Line 136...
136
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
136
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
137
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
137
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
138
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
138
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
139
		#必填寫的參數:
139
		#必填寫的參數:
140
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
140
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
141
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;	
141
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
142
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
142
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
143
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
143
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
144
		#可以省略的參數:
144
		#可以省略的參數:
145
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
145
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
146
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
146
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
Line 154... Line 154...
154
		#$conf["canBeEmpty"]=array();
154
		#$conf["canBeEmpty"]=array();
155
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
155
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
156
		#$conf["skipableVariableCanNotBeEmpty"]=array();
156
		#$conf["skipableVariableCanNotBeEmpty"]=array();
157
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
157
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
158
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ftpAcct","ftpPass","ftpAddr","ftpPort");
158
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ftpAcct","ftpPass","ftpAddr","ftpPort");
159
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
159
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
160
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
160
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
161
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
161
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
162
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
162
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
163
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
163
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
164
		#$conf["disallowAllSkipableVarIsEmpty"]="";
164
		#$conf["disallowAllSkipableVarIsEmpty"]="";
Line 168... Line 168...
168
		#$conf["arrayCountEqualCheck"][]=array();
168
		#$conf["arrayCountEqualCheck"][]=array();
169
		#參考資料來源:
169
		#參考資料來源:
170
		#array_keys=>http://php.net/manual/en/function.array-keys.php
170
		#array_keys=>http://php.net/manual/en/function.array-keys.php
171
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
171
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
172
		unset($conf["variableCheck::checkArguments"]);
172
		unset($conf["variableCheck::checkArguments"]);
173
		
173
 
174
		#如果檢查參數失敗
174
		#如果檢查參數失敗
175
		if($checkArguments["status"]==="false"){
175
		if($checkArguments["status"]==="false"){
176
		
176
 
177
			#設置執行失敗
177
			#設置執行失敗
178
			$result["status"]="false";
178
			$result["status"]="false";
179
			
179
 
180
			#設置錯誤訊息
180
			#設置錯誤訊息
181
			$result["error"]=$checkArguments;
181
			$result["error"]=$checkArguments;
182
			
182
 
183
			#回傳結果
183
			#回傳結果
184
			return $result;
184
			return $result;
185
		
185
 
186
			}#if end
186
			}#if end
187
			
187
 
188
		#如果檢查參數失敗
188
		#如果檢查參數失敗
189
		if($checkArguments["passed"]==="false"){
189
		if($checkArguments["passed"]==="false"){
190
		
190
 
191
			#設置執行失敗
191
			#設置執行失敗
192
			$result["status"]="false";
192
			$result["status"]="false";
193
			
193
 
194
			#設置錯誤訊息
194
			#設置錯誤訊息
195
			$result["error"]=$checkArguments;
195
			$result["error"]=$checkArguments;
196
			
196
 
197
			#回傳結果
197
			#回傳結果
198
			return $result;
198
			return $result;
199
		
199
 
200
			}#if end
200
			}#if end
201
		
201
 
202
		#函式說明:
202
		#函式說明:
203
		#呼叫shell執行系統命令,並取得回傳的內容.
203
		#呼叫shell執行系統命令,並取得回傳的內容.
204
		#回傳的結果:
204
		#回傳的結果:
205
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
205
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
206
		#$result["error"],錯誤訊息陣列.
206
		#$result["error"],錯誤訊息陣列.
Line 214... Line 214...
214
		#$result["pid"],pid
214
		#$result["pid"],pid
215
		#必填的參數
215
		#必填的參數
216
		#$conf["command"],字串,要執行的指令與.
216
		#$conf["command"],字串,要執行的指令與.
217
		$conf["external::callShell"]["command"]="umount";
217
		$conf["external::callShell"]["command"]="umount";
218
		#$conf["fileArgu"],字串,變數__FILE__的內容.
218
		#$conf["fileArgu"],字串,變數__FILE__的內容.
219
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];		
219
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
220
		#可省略參數:
220
		#可省略參數:
221
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
221
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
222
		$conf["external::callShell"]["argu"]=array($conf["path"]);
222
		$conf["external::callShell"]["argu"]=array($conf["path"]);
223
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
223
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
224
		#$conf["arguIsAddr"]=array();
224
		#$conf["arguIsAddr"]=array();
Line 244... Line 244...
244
		#exec=>http://php.net/manual/en/function.exec.php
244
		#exec=>http://php.net/manual/en/function.exec.php
245
		#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
245
		#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
246
		#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
246
		#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
247
		$callShell=external::callShell($conf["external::callShell"]);
247
		$callShell=external::callShell($conf["external::callShell"]);
248
		unset($conf["external::callShell"]);
248
		unset($conf["external::callShell"]);
249
		
249
 
250
		#如果掛載ftp目錄到本機目錄失敗
250
		#如果掛載ftp目錄到本機目錄失敗
251
		if($callShell["status"]==="false"){
251
		if($callShell["status"]==="false"){
252
			
252
 
253
			#設置執行失敗
253
			#設置執行失敗
254
			$result["status"]="false";
254
			$result["status"]="false";
255
			
255
 
256
			#設置錯誤訊息
256
			#設置錯誤訊息
257
			$result["error"]=$callShell;
257
			$result["error"]=$callShell;
258
			
258
 
259
			#回傳結果
259
			#回傳結果
260
			return $result;
260
			return $result;
261
			
261
 
262
			}#if end
262
			}#if end
263
			
263
 
264
		#設置執行正常
264
		#設置執行正常
265
		$result["status"]="true";
265
		$result["status"]="true";
266
		
266
 
267
		#回傳結果
267
		#回傳結果
268
		return $result;
268
		return $result;
269
		
269
 
270
		}#function umount end
270
		}#function umount end
271
	
271
 
272
	/*
272
	/*
273
	#函式說明:
273
	#函式說明:
274
	#用curlftpfs指令將ftp掛載到本地目錄
274
	#用curlftpfs指令將ftp掛載到本地目錄
275
	#回傳結果:
275
	#回傳結果:
276
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
276
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 278... Line 278...
278
	#$result["function"],當前執行的函式名稱.
278
	#$result["function"],當前執行的函式名稱.
279
	#必填參數:
279
	#必填參數:
280
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
280
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
281
	$conf["fileArgu"]=__FILE__;
281
	$conf["fileArgu"]=__FILE__;
282
	#$conf["path"],字串,要掛載ftp到本機端的哪個目錄.
282
	#$conf["path"],字串,要掛載ftp到本機端的哪個目錄.
283
	$conf["path"]="";	
283
	$conf["path"]="";
284
	#可省略參數:
284
	#可省略參數:
285
	#$conf["ftpAcct"],字串,ftp帳戶名稱,預設為"anonymous"
285
	#$conf["ftpAcct"],字串,ftp帳戶名稱,預設為"anonymous"
286
	#$conf["ftpAcct"]="anonymous";
286
	#$conf["ftpAcct"]="anonymous";
287
	#$conf["ftpPass"],字串,ftp密碼,預設不使用.
287
	#$conf["ftpPass"],字串,ftp密碼,預設不使用.
288
	#$conf["ftpPass"]="";
288
	#$conf["ftpPass"]="";
Line 294... Line 294...
294
	#無.
294
	#無.
295
	#備註:
295
	#備註:
296
	#只能在command line運行
296
	#只能在command line運行
297
	*/
297
	*/
298
	public static function mountFtp(&$conf=array()){
298
	public static function mountFtp(&$conf=array()){
299
		
299
 
300
		#初始化要回傳的結果
300
		#初始化要回傳的結果
301
		$result=array();
301
		$result=array();
302
		
302
 
303
		#設置當前執行的函式
303
		#設置當前執行的函式
304
		$result["function"]=__FUNCTION__;
304
		$result["function"]=__FUNCTION__;
305
		
305
 
306
		#函式說明:
306
		#函式說明:
307
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
307
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
308
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
308
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
309
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
309
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
310
		#$result["function"],當前執行的函式名稱.
310
		#$result["function"],當前執行的函式名稱.
Line 317... Line 317...
317
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
317
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
318
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
318
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
319
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
319
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
320
		#必填寫的參數:
320
		#必填寫的參數:
321
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
321
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
322
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;	
322
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
323
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
323
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
324
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
324
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
325
		#可以省略的參數:
325
		#可以省略的參數:
326
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
326
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
327
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
327
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
Line 335... Line 335...
335
		#$conf["canBeEmpty"]=array();
335
		#$conf["canBeEmpty"]=array();
336
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
336
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
337
		#$conf["skipableVariableCanNotBeEmpty"]=array();
337
		#$conf["skipableVariableCanNotBeEmpty"]=array();
338
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
338
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
339
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ftpAcct","ftpPass","ftpAddr","ftpPort");
339
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ftpAcct","ftpPass","ftpAddr","ftpPort");
340
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
340
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
341
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
341
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
342
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
342
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
343
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
343
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
344
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
344
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
345
		#$conf["disallowAllSkipableVarIsEmpty"]="";
345
		#$conf["disallowAllSkipableVarIsEmpty"]="";
Line 349... Line 349...
349
		#$conf["arrayCountEqualCheck"][]=array();
349
		#$conf["arrayCountEqualCheck"][]=array();
350
		#參考資料來源:
350
		#參考資料來源:
351
		#array_keys=>http://php.net/manual/en/function.array-keys.php
351
		#array_keys=>http://php.net/manual/en/function.array-keys.php
352
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
352
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
353
		unset($conf["variableCheck::checkArguments"]);
353
		unset($conf["variableCheck::checkArguments"]);
354
		
354
 
355
		#如果檢查參數失敗
355
		#如果檢查參數失敗
356
		if($checkArguments["status"]==="false"){
356
		if($checkArguments["status"]==="false"){
357
		
357
 
358
			#設置執行失敗
358
			#設置執行失敗
359
			$result["status"]="false";
359
			$result["status"]="false";
360
			
360
 
361
			#設置錯誤訊息
361
			#設置錯誤訊息
362
			$result["error"]=$checkArguments;
362
			$result["error"]=$checkArguments;
363
			
363
 
364
			#回傳結果
364
			#回傳結果
365
			return $result;
365
			return $result;
366
		
366
 
367
			}#if end
367
			}#if end
368
			
368
 
369
		#如果檢查參數失敗
369
		#如果檢查參數失敗
370
		if($checkArguments["passed"]==="false"){
370
		if($checkArguments["passed"]==="false"){
371
		
371
 
372
			#設置執行失敗
372
			#設置執行失敗
373
			$result["status"]="false";
373
			$result["status"]="false";
374
			
374
 
375
			#設置錯誤訊息
375
			#設置錯誤訊息
376
			$result["error"]=$checkArguments;
376
			$result["error"]=$checkArguments;
377
			
377
 
378
			#回傳結果
378
			#回傳結果
379
			return $result;
379
			return $result;
380
		
380
 
381
			}#if end	
381
			}#if end
382
			
382
 
383
		#使用的指令
383
		#使用的指令
384
		$curlftpfs="curlftpfs";
384
		$curlftpfs="curlftpfs";
385
		
385
 
386
		#確認要掛載的路徑
386
		#確認要掛載的路徑
387
		#涵式說明:
387
		#涵式說明:
388
		#確保路徑存在.
388
		#確保路徑存在.
389
		#回傳的結果:
389
		#回傳的結果:
390
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
390
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
Line 392... Line 392...
392
		#$resutl["function"],當前執行的涵式名稱.
392
		#$resutl["function"],當前執行的涵式名稱.
393
		#$result["path"],建立好的路徑字串.
393
		#$result["path"],建立好的路徑字串.
394
		#$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
394
		#$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
395
		#必填的參數:
395
		#必填的參數:
396
		#$conf["path"],要檢查的路徑
396
		#$conf["path"],要檢查的路徑
397
		$conf["fileAccess::validatePath"]["path"]=$conf["path"];		
397
		$conf["fileAccess::validatePath"]["path"]=$conf["path"];
398
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
398
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
399
		$conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
399
		$conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
400
		#可省略參數:
400
		#可省略參數:
401
		#$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
401
		#$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
402
		#$conf["haveFileName"]="false";
402
		#$conf["haveFileName"]="false";
Line 405... Line 405...
405
		$validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
405
		$validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
406
		unset($conf["fileAccess::validatePath"]);
406
		unset($conf["fileAccess::validatePath"]);
407
 
407
 
408
		#如果確認要掛載的路徑失敗
408
		#如果確認要掛載的路徑失敗
409
		if($validatePath["status"]==="false"){
409
		if($validatePath["status"]==="false"){
410
			
410
 
411
			#設置執行失敗
411
			#設置執行失敗
412
			$result["status"]="false";
412
			$result["status"]="false";
413
			
413
 
414
			#設置錯誤訊息
414
			#設置錯誤訊息
415
			$result["error"]=$validatePath;
415
			$result["error"]=$validatePath;
416
			
416
 
417
			#回傳結果
417
			#回傳結果
418
			return $result;
418
			return $result;
419
			
419
 
420
			}#if end
420
			}#if end
421
 
421
 
422
		#檢查掛載ftp目錄到本機目錄的指令是否存在
422
		#檢查掛載ftp目錄到本機目錄的指令是否存在
423
		#函式說明:
423
		#函式說明:
424
		#檢查指令是否存在
424
		#檢查指令是否存在
Line 435... Line 435...
435
		$conf["cmd::checkCmdExist"]["fileArgu"]=$conf["fileArgu"];
435
		$conf["cmd::checkCmdExist"]["fileArgu"]=$conf["fileArgu"];
436
		#可省略參數:
436
		#可省略參數:
437
		#$conf["binPath"],字串,要搜尋的路徑,預設為"/usr/bin".
437
		#$conf["binPath"],字串,要搜尋的路徑,預設為"/usr/bin".
438
		#$conf["binPath"]="";
438
		#$conf["binPath"]="";
439
		$checkCmdExist=cmd::checkCmdExist($conf["cmd::checkCmdExist"]);
439
		$checkCmdExist=cmd::checkCmdExist($conf["cmd::checkCmdExist"]);
440
		unset($conf["cmd::checkCmdExist"]);	
440
		unset($conf["cmd::checkCmdExist"]);
441
 
441
 
442
		#如果檢查掛載ftp目錄到本機目錄的指令是否存在失敗
442
		#如果檢查掛載ftp目錄到本機目錄的指令是否存在失敗
443
		if($checkCmdExist["status"]==="false"){
443
		if($checkCmdExist["status"]==="false"){
444
			
444
 
445
			#設置執行失敗
445
			#設置執行失敗
446
			$result["status"]="false";
446
			$result["status"]="false";
447
			
447
 
448
			#設置錯誤訊息
448
			#設置錯誤訊息
449
			$result["error"]=$checkCmdExist;
449
			$result["error"]=$checkCmdExist;
450
			
450
 
451
			#回傳結果
451
			#回傳結果
452
			return $result;
452
			return $result;
453
			
453
 
454
			}#if end
454
			}#if end
455
			
455
 
456
		#如果檢查掛載ftp目錄到本機目錄的指令不存在
456
		#如果檢查掛載ftp目錄到本機目錄的指令不存在
457
		if($checkCmdExist["founded"]==="false"){
457
		if($checkCmdExist["founded"]==="false"){
458
						
458
 
459
			#設置執行失敗
459
			#設置執行失敗
460
			$result["status"]="false";
460
			$result["status"]="false";
461
			
461
 
462
			#設置錯誤訊息
462
			#設置錯誤訊息
463
			$result["error"]=$checkCmdExist;
463
			$result["error"]=$checkCmdExist;
464
			
464
 
465
			#回傳結果
465
			#回傳結果
466
			return $result;
466
			return $result;
467
			
467
 
468
			}#if end
468
			}#if end
469
 
469
 
470
		#如果未設置密碼
470
		#如果未設置密碼
471
		if(!isset($conf["ftpPass"])){
471
		if(!isset($conf["ftpPass"])){
472
			
472
 
473
			#設置密碼字串為""
473
			#設置密碼字串為""
474
			$conf["ftpPass"]="";
474
			$conf["ftpPass"]="";
475
			
475
 
476
			}#if end
476
			}#if end
477
 
477
 
478
		#反之
478
		#反之
479
		else{
479
		else{
480
			
480
 
481
			#設置密碼字串
481
			#設置密碼字串
482
			$conf["ftpPass"]=":".$conf["ftpPass"];			
482
			$conf["ftpPass"]=":".$conf["ftpPass"];
483
			
483
 
484
			}#else end
484
			}#else end
485
 
485
 
486
		#如果掛載的路徑含有 空格
486
		#如果掛載的路徑含有 空格
487
		if(strpos($conf["path"]," ")!==false){
487
		if(strpos($conf["path"]," ")!==false){
488
			
488
 
489
			#用 " " 包起來
489
			#用 " " 包起來
490
			$conf["path"]="\"".$conf["path"]."\"";
490
			$conf["path"]="\"".$conf["path"]."\"";
491
			
491
 
492
			}#if end
492
			}#if end
493
 
493
 
494
		#檢查要掛載的目錄是否已掛載ftp目錄
494
		#檢查要掛載的目錄是否已掛載ftp目錄
495
		#函數說明:
495
		#函數說明:
496
		#檢查指令的輸出是否含有關鍵字
496
		#檢查指令的輸出是否含有關鍵字
Line 501... Line 501...
501
		#$result["argu"],使用的參數.
501
		#$result["argu"],使用的參數.
502
		#$result["founded"],是否找到關鍵字,"true"代表有,"false"代表沒有.
502
		#$result["founded"],是否找到關鍵字,"true"代表有,"false"代表沒有.
503
		#$result["content"],關鍵字所在列的輸出.
503
		#$result["content"],關鍵字所在列的輸出.
504
		#必填參數:
504
		#必填參數:
505
		#$conf["cmd"],字串,要執行的指令.
505
		#$conf["cmd"],字串,要執行的指令.
506
		$conf["cmd::searchOutPut"]["cmd"]="ps";	
506
		$conf["cmd::searchOutPut"]["cmd"]="ps";
507
		#$conf["keyWord"],字串,要檢查是否有關鍵字.
507
		#$conf["keyWord"],字串,要檢查是否有關鍵字.
508
		$conf["cmd::searchOutPut"]["keyWord"]=$curlftpfs." -o user=".$conf["ftpAcct"].$conf["ftpPass"].",allow_other ".$conf["ftpAddr"]." ".$conf["path"];
508
		$conf["cmd::searchOutPut"]["keyWord"]=$curlftpfs." -o user=".$conf["ftpAcct"].$conf["ftpPass"].",allow_other ".$conf["ftpAddr"]." ".$conf["path"];
509
		#$conf["fileArgu"],字串,變數__FILE__的內容.
509
		#$conf["fileArgu"],字串,變數__FILE__的內容.
510
		$conf["cmd::searchOutPut"]["fileArgu"]=$conf["fileArgu"];
510
		$conf["cmd::searchOutPut"]["fileArgu"]=$conf["fileArgu"];
511
		#可省略參數:	
511
		#可省略參數:
512
		#$conf["binPath"],字串,應用程式的路徑,預設為"/usr/bin".
512
		#$conf["binPath"],字串,應用程式的路徑,預設為"/usr/bin".
513
		#$conf["binPath"]="";
513
		#$conf["binPath"]="";
514
		#$conf["argu"],陣列字串,指令搭配的參數,預設不使用.
514
		#$conf["argu"],陣列字串,指令搭配的參數,預設不使用.
515
		$conf["cmd::searchOutPut"]["argu"]=array("aux");
515
		$conf["cmd::searchOutPut"]["argu"]=array("aux");
516
		#$conf["excludeGrep"],字串,"true"代表排除含有 " | grep ".$conf["keyWord"] 字樣的輸出;預設為"false",不排除.
516
		#$conf["excludeGrep"],字串,"true"代表排除含有 " | grep ".$conf["keyWord"] 字樣的輸出;預設為"false",不排除.
517
		$conf["cmd::searchOutPut"]["excludeGrep"]="true";
517
		$conf["cmd::searchOutPut"]["excludeGrep"]="true";
518
		$searchOutPut=cmd::searchOutPut($conf["cmd::searchOutPut"]);
518
		$searchOutPut=cmd::searchOutPut($conf["cmd::searchOutPut"]);
519
		unset($conf["cmd::searchOutPut"]);
519
		unset($conf["cmd::searchOutPut"]);
520
		
520
 
521
		#如果執行失敗
521
		#如果執行失敗
522
		if($searchOutPut["status"]==="false"){
522
		if($searchOutPut["status"]==="false"){
523
			
523
 
524
			#設置執行失敗
524
			#設置執行失敗
525
			$result["status"]="false";
525
			$result["status"]="false";
526
			
526
 
527
			#設置錯誤訊息
527
			#設置錯誤訊息
528
			$result["error"]=$searchOutPut;
528
			$result["error"]=$searchOutPut;
529
			
529
 
530
			#回傳結果
530
			#回傳結果
531
			return $result;
531
			return $result;
532
			
532
 
533
			}#if end
533
			}#if end
534
			
534
 
535
		#如果存在要掛載的ftp資訊與目錄
535
		#如果存在要掛載的ftp資訊與目錄
536
		if($searchOutPut["founded"]==="true"){
536
		if($searchOutPut["founded"]==="true"){
537
			
537
 
538
			#設置執行成功
538
			#設置執行成功
539
			$result["status"]="true";
539
			$result["status"]="true";
540
						
540
 
541
			#回傳結果
541
			#回傳結果
542
			return $result;
542
			return $result;
543
			
543
 
544
			}#if end
544
			}#if end
545
 
545
 
546
		#掛載 ftp 到本機上的目錄
546
		#掛載 ftp 到本機上的目錄
547
		#涵式說明:
547
		#涵式說明:
548
		#呼叫shell執行系統命令,並取得回傳的內容.
548
		#呼叫shell執行系統命令,並取得回傳的內容.
Line 559... Line 559...
559
		#$result["pid"],pid
559
		#$result["pid"],pid
560
		#必填的參數
560
		#必填的參數
561
		#$conf["command"],字串,要執行的指令與.
561
		#$conf["command"],字串,要執行的指令與.
562
		$conf["external::callShell"]["command"]="curlftpfs";
562
		$conf["external::callShell"]["command"]="curlftpfs";
563
		#$conf["fileArgu"],字串,變數__FILE__的內容.
563
		#$conf["fileArgu"],字串,變數__FILE__的內容.
564
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];		
564
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
565
		#可省略參數:
565
		#可省略參數:
566
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
566
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
567
		$conf["external::callShell"]["argu"]=array("-o","user=".$conf["ftpAcct"].$conf["ftpPass"].",allow_other",$conf["ftpAddr"],$conf["path"]);
567
		$conf["external::callShell"]["argu"]=array("-o","user=".$conf["ftpAcct"].$conf["ftpPass"].",allow_other",$conf["ftpAddr"],$conf["path"]);
568
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
568
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
569
		$conf["external::callShell"]["arguIsAddr"]=array("false","false","false","true");
569
		$conf["external::callShell"]["arguIsAddr"]=array("false","false","false","true");
Line 592... Line 592...
592
		$callShell=external::callShell($conf["external::callShell"]);
592
		$callShell=external::callShell($conf["external::callShell"]);
593
		unset($conf["external::callShell"]);
593
		unset($conf["external::callShell"]);
594
 
594
 
595
		#如果掛載ftp目錄到本機目錄失敗
595
		#如果掛載ftp目錄到本機目錄失敗
596
		if($callShell["status"]==="false"){
596
		if($callShell["status"]==="false"){
597
			
597
 
598
			#設置執行失敗
598
			#設置執行失敗
599
			$result["status"]="false";
599
			$result["status"]="false";
600
			
600
 
601
			#設置錯誤訊息
601
			#設置錯誤訊息
602
			$result["error"]=$callShell;
602
			$result["error"]=$callShell;
603
			
603
 
604
			#回傳結果
604
			#回傳結果
605
			return $result;
605
			return $result;
606
			
606
 
607
			}#if end
607
			}#if end
608
			
608
 
609
		#設置執行正常
609
		#設置執行正常
610
		$result["status"]="true";
610
		$result["status"]="true";
611
		
611
 
612
		#回傳結果
612
		#回傳結果
613
		return $result;
613
		return $result;
614
		
614
 
615
		}#function mountFtp end
615
		}#function mountFtp end
616
		
616
 
617
	/*
617
	/*
618
	#函式說明:
618
	#函式說明:
619
	#用sshfs指令將sftp掛載到本地目錄
619
	#用sshfs指令將sftp掛載到本地目錄
620
	#回傳結果:
620
	#回傳結果:
621
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
621
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 623... Line 623...
623
	#$result["function"],當前執行的函式名稱.
623
	#$result["function"],當前執行的函式名稱.
624
	#必填參數:
624
	#必填參數:
625
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
625
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
626
	$conf["fileArgu"]=__FILE__;
626
	$conf["fileArgu"]=__FILE__;
627
	#$conf["path"],字串,要掛載ftp到本機端的哪個目錄.
627
	#$conf["path"],字串,要掛載ftp到本機端的哪個目錄.
628
	$conf["path"]="";	
628
	$conf["path"]="";
629
	#可省略參數:
629
	#可省略參數:
630
	#$conf["sftpAcct"],字串,ftp帳戶名稱,預設為"anonymous"
630
	#$conf["sftpAcct"],字串,ftp帳戶名稱,預設為"anonymous"
631
	#$conf["sftpAcct"]="anonymous";
631
	#$conf["sftpAcct"]="anonymous";
632
	#$conf["sftpPass"],字串,ftp密碼,預設不使用.
632
	#$conf["sftpPass"],字串,ftp密碼,預設不使用.
633
	#$conf["sftpPass"]="";
633
	#$conf["sftpPass"]="";
Line 639... Line 639...
639
	#無.
639
	#無.
640
	#備註:
640
	#備註:
641
	#只能在command line運行
641
	#只能在command line運行
642
	*/
642
	*/
643
	public static function mountSftp(&$conf=array()){
643
	public static function mountSftp(&$conf=array()){
644
		
644
 
645
		#初始化要回傳的結果
645
		#初始化要回傳的結果
646
		$result=array();
646
		$result=array();
647
		
647
 
648
		#設置當前執行的函式
648
		#設置當前執行的函式
649
		$result["function"]=__FUNCTION__;
649
		$result["function"]=__FUNCTION__;
650
		
650
 
651
		#函式說明:
651
		#函式說明:
652
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
652
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
653
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
653
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
654
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
654
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
655
		#$result["function"],當前執行的函式名稱.
655
		#$result["function"],當前執行的函式名稱.
Line 662... Line 662...
662
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
662
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
663
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
663
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
664
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
664
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
665
		#必填寫的參數:
665
		#必填寫的參數:
666
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
666
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
667
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;	
667
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
668
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
668
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
669
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
669
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
670
		#可以省略的參數:
670
		#可以省略的參數:
671
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
671
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
672
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
672
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","path");
Line 680... Line 680...
680
		#$conf["canBeEmpty"]=array();
680
		#$conf["canBeEmpty"]=array();
681
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
681
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
682
		#$conf["skipableVariableCanNotBeEmpty"]=array();
682
		#$conf["skipableVariableCanNotBeEmpty"]=array();
683
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
683
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
684
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("sftpAcct","sftpPass","sftpAddr","sftpPort");
684
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("sftpAcct","sftpPass","sftpAddr","sftpPort");
685
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
685
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
686
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
686
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
687
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
687
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
688
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
688
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("anonymous",null,"localhost",null);
689
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
689
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
690
		#$conf["disallowAllSkipableVarIsEmpty"]="";
690
		#$conf["disallowAllSkipableVarIsEmpty"]="";
Line 694... Line 694...
694
		#$conf["arrayCountEqualCheck"][]=array();
694
		#$conf["arrayCountEqualCheck"][]=array();
695
		#參考資料來源:
695
		#參考資料來源:
696
		#array_keys=>http://php.net/manual/en/function.array-keys.php
696
		#array_keys=>http://php.net/manual/en/function.array-keys.php
697
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
697
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
698
		unset($conf["variableCheck::checkArguments"]);
698
		unset($conf["variableCheck::checkArguments"]);
699
		
699
 
700
		#如果檢查參數失敗
700
		#如果檢查參數失敗
701
		if($checkArguments["status"]==="false"){
701
		if($checkArguments["status"]==="false"){
702
		
702
 
703
			#設置執行失敗
703
			#設置執行失敗
704
			$result["status"]="false";
704
			$result["status"]="false";
705
			
705
 
706
			#設置錯誤訊息
706
			#設置錯誤訊息
707
			$result["error"]=$checkArguments;
707
			$result["error"]=$checkArguments;
708
			
708
 
709
			#回傳結果
709
			#回傳結果
710
			return $result;
710
			return $result;
711
		
711
 
712
			}#if end
712
			}#if end
713
			
713
 
714
		#如果檢查參數失敗
714
		#如果檢查參數失敗
715
		if($checkArguments["passed"]==="false"){
715
		if($checkArguments["passed"]==="false"){
716
		
716
 
717
			#設置執行失敗
717
			#設置執行失敗
718
			$result["status"]="false";
718
			$result["status"]="false";
719
			
719
 
720
			#設置錯誤訊息
720
			#設置錯誤訊息
721
			$result["error"]=$checkArguments;
721
			$result["error"]=$checkArguments;
722
			
722
 
723
			#回傳結果
723
			#回傳結果
724
			return $result;
724
			return $result;
725
		
725
 
726
			}#if end	
726
			}#if end
727
			
727
 
728
		#使用的指令
728
		#使用的指令
729
		$sshfs="sshfs";
729
		$sshfs="sshfs";
730
		
730
 
731
		#確認要掛載的路徑
731
		#確認要掛載的路徑
732
		#涵式說明:
732
		#涵式說明:
733
		#確保路徑存在.
733
		#確保路徑存在.
734
		#回傳的結果:
734
		#回傳的結果:
735
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
735
		#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
Line 737... Line 737...
737
		#$resutl["function"],當前執行的涵式名稱.
737
		#$resutl["function"],當前執行的涵式名稱.
738
		#$result["path"],建立好的路徑字串.
738
		#$result["path"],建立好的路徑字串.
739
		#$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
739
		#$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
740
		#必填的參數:
740
		#必填的參數:
741
		#$conf["path"],要檢查的路徑
741
		#$conf["path"],要檢查的路徑
742
		$conf["fileAccess::validatePath"]["path"]=$conf["path"];		
742
		$conf["fileAccess::validatePath"]["path"]=$conf["path"];
743
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
743
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
744
		$conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
744
		$conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
745
		#可省略參數:
745
		#可省略參數:
746
		#$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
746
		#$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
747
		#$conf["haveFileName"]="false";
747
		#$conf["haveFileName"]="false";
Line 750... Line 750...
750
		$validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
750
		$validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
751
		unset($conf["fileAccess::validatePath"]);
751
		unset($conf["fileAccess::validatePath"]);
752
 
752
 
753
		#如果確認要掛載的路徑失敗
753
		#如果確認要掛載的路徑失敗
754
		if($validatePath["status"]==="false"){
754
		if($validatePath["status"]==="false"){
755
			
755
 
756
			#設置執行失敗
756
			#設置執行失敗
757
			$result["status"]="false";
757
			$result["status"]="false";
758
			
758
 
759
			#設置錯誤訊息
759
			#設置錯誤訊息
760
			$result["error"]=$validatePath;
760
			$result["error"]=$validatePath;
761
			
761
 
762
			#回傳結果
762
			#回傳結果
763
			return $result;
763
			return $result;
764
			
764
 
765
			}#if end
765
			}#if end
766
 
766
 
767
		#檢查掛載sftp目錄到本機目錄的指令是否存在
767
		#檢查掛載sftp目錄到本機目錄的指令是否存在
768
		#函式說明:
768
		#函式說明:
769
		#檢查指令是否存在
769
		#檢查指令是否存在
Line 780... Line 780...
780
		$conf["cmd::checkCmdExist"]["fileArgu"]=$conf["fileArgu"];
780
		$conf["cmd::checkCmdExist"]["fileArgu"]=$conf["fileArgu"];
781
		#可省略參數:
781
		#可省略參數:
782
		#$conf["binPath"],字串,要搜尋的路徑,預設為"/usr/bin".
782
		#$conf["binPath"],字串,要搜尋的路徑,預設為"/usr/bin".
783
		#$conf["binPath"]="";
783
		#$conf["binPath"]="";
784
		$checkCmdExist=cmd::checkCmdExist($conf["cmd::checkCmdExist"]);
784
		$checkCmdExist=cmd::checkCmdExist($conf["cmd::checkCmdExist"]);
785
		unset($conf["cmd::checkCmdExist"]);	
785
		unset($conf["cmd::checkCmdExist"]);
786
 
786
 
787
		#如果檢查掛載sftp目錄到本機目錄的指令是否存在失敗
787
		#如果檢查掛載sftp目錄到本機目錄的指令是否存在失敗
788
		if($checkCmdExist["status"]==="false"){
788
		if($checkCmdExist["status"]==="false"){
789
			
789
 
790
			#設置執行失敗
790
			#設置執行失敗
791
			$result["status"]="false";
791
			$result["status"]="false";
792
			
792
 
793
			#設置錯誤訊息
793
			#設置錯誤訊息
794
			$result["error"]=$checkCmdExist;
794
			$result["error"]=$checkCmdExist;
795
			
795
 
796
			#回傳結果
796
			#回傳結果
797
			return $result;
797
			return $result;
798
			
798
 
799
			}#if end
799
			}#if end
800
			
800
 
801
		#如果檢查掛載ftp目錄到本機目錄的指令不存在
801
		#如果檢查掛載ftp目錄到本機目錄的指令不存在
802
		if($checkCmdExist["founded"]==="false"){
802
		if($checkCmdExist["founded"]==="false"){
803
						
803
 
804
			#設置執行失敗
804
			#設置執行失敗
805
			$result["status"]="false";
805
			$result["status"]="false";
806
			
806
 
807
			#設置錯誤訊息
807
			#設置錯誤訊息
808
			$result["error"]=$checkCmdExist;
808
			$result["error"]=$checkCmdExist;
809
			
809
 
810
			#回傳結果
810
			#回傳結果
811
			return $result;
811
			return $result;
812
			
812
 
813
			}#if end
813
			}#if end
814
 
814
 
815
		#如果未設置密碼
815
		#如果未設置密碼
816
		if(!isset($conf["sftpPass"])){
816
		if(!isset($conf["sftpPass"])){
817
			
817
 
818
			#設置密碼字串為""
818
			#設置密碼字串為""
819
			$conf["sftpPass"]="";
819
			$conf["sftpPass"]="";
820
			
820
 
821
			}#if end
821
			}#if end
822
 
822
 
823
		#反之
823
		#反之
824
		else{
824
		else{
825
			
825
 
826
			#設置預先輸入密碼的指令
826
			#設置預先輸入密碼的指令
827
			$prePassCmd="sshpass";
827
			$prePassCmd="sshpass";
828
			
828
 
829
			#設置預先輸入密碼的參數
829
			#設置預先輸入密碼的參數
830
			$prePassParam=array("-p",$conf["sftpPass"],"-v");
830
			$prePassParam=array("-p",$conf["sftpPass"],"-v");
831
			
831
 
832
			#設置密碼字串
832
			#設置密碼字串
833
			$conf["sftpPass"]="sshpass -p ".$conf["sftpPass"]." -v ";		
833
			$conf["sftpPass"]="sshpass -p ".$conf["sftpPass"]." -v ";
834
			
834
 
835
			}#else end
835
			}#else end
836
 
836
 
837
		#如果掛載的路徑含有 空格
837
		#如果掛載的路徑含有 空格
838
		if(strpos($conf["path"]," ")!==false){
838
		if(strpos($conf["path"]," ")!==false){
839
			
839
 
840
			#用 " " 包起來
840
			#用 " " 包起來
841
			$conf["path"]="\"".$conf["path"]."\"";
841
			$conf["path"]="\"".$conf["path"]."\"";
842
			
842
 
843
			}#if end
843
			}#if end
844
 
844
 
845
		#如果存在 $conf["sftpPort"]
845
		#如果存在 $conf["sftpPort"]
846
		if(isset($conf["sftpPort"])){
846
		if(isset($conf["sftpPort"])){
847
			
847
 
848
			#設置 -p 參數
848
			#設置 -p 參數
849
			$conf["sftpPort"]=",port=".$conf["sftpPort"];
849
			$conf["sftpPort"]=",port=".$conf["sftpPort"];
850
			
850
 
851
			}#if end
851
			}#if end
852
			
852
 
853
		#反之
853
		#反之
854
		else{
854
		else{
855
			
855
 
856
			#設置為空字串
856
			#設置為空字串
857
			$conf["sftpPort"]="";
857
			$conf["sftpPort"]="";
858
			
858
 
859
			}#else end
859
			}#else end
860
 
860
 
861
		#設置運行sshfs的指令
861
		#設置運行sshfs的指令
862
		$cmdSshfs="nohup ".$conf["sftpPass"].$sshfs." -f -o allow_other".$conf["sftpPort"]." ".$conf["sftpAcct"]."@".$conf["sftpAddr"].":/home/liveuser ".$conf["path"];
862
		$cmdSshfs="nohup ".$conf["sftpPass"].$sshfs." -f -o allow_other".$conf["sftpPort"]." ".$conf["sftpAcct"]."@".$conf["sftpAddr"].":/home/liveuser ".$conf["path"];
863
 
863
 
Line 871... Line 871...
871
		#$result["argu"],使用的參數.
871
		#$result["argu"],使用的參數.
872
		#$result["founded"],是否找到關鍵字,"true"代表有,"false"代表沒有.
872
		#$result["founded"],是否找到關鍵字,"true"代表有,"false"代表沒有.
873
		#$result["content"],關鍵字所在列的輸出.
873
		#$result["content"],關鍵字所在列的輸出.
874
		#必填參數:
874
		#必填參數:
875
		#$conf["cmd"],字串,要執行的指令.
875
		#$conf["cmd"],字串,要執行的指令.
876
		$conf["cmd::searchOutPut"]["cmd"]="ps";	
876
		$conf["cmd::searchOutPut"]["cmd"]="ps";
877
		#$conf["keyWord"],字串,要檢查是否有關鍵字.
877
		#$conf["keyWord"],字串,要檢查是否有關鍵字.
878
		$conf["cmd::searchOutPut"]["keyWord"]=$cmdSshfs;
878
		$conf["cmd::searchOutPut"]["keyWord"]=$cmdSshfs;
879
		#$conf["fileArgu"],字串,變數__FILE__的內容.
879
		#$conf["fileArgu"],字串,變數__FILE__的內容.
880
		$conf["cmd::searchOutPut"]["fileArgu"]=$conf["fileArgu"];
880
		$conf["cmd::searchOutPut"]["fileArgu"]=$conf["fileArgu"];
881
		#可省略參數:	
881
		#可省略參數:
882
		#$conf["binPath"],字串,應用程式的路徑,預設為"/usr/bin".
882
		#$conf["binPath"],字串,應用程式的路徑,預設為"/usr/bin".
883
		#$conf["binPath"]="";
883
		#$conf["binPath"]="";
884
		#$conf["argu"],陣列字串,指令搭配的參數,預設不使用.
884
		#$conf["argu"],陣列字串,指令搭配的參數,預設不使用.
885
		$conf["cmd::searchOutPut"]["argu"]=array("aux");
885
		$conf["cmd::searchOutPut"]["argu"]=array("aux");
886
		#$conf["excludeGrep"],字串,"true"代表排除含有 " | grep ".$conf["keyWord"] 字樣的輸出;預設為"false",不排除.
886
		#$conf["excludeGrep"],字串,"true"代表排除含有 " | grep ".$conf["keyWord"] 字樣的輸出;預設為"false",不排除.
887
		$conf["cmd::searchOutPut"]["excludeGrep"]="true";
887
		$conf["cmd::searchOutPut"]["excludeGrep"]="true";
888
		$searchOutPut=cmd::searchOutPut($conf["cmd::searchOutPut"]);
888
		$searchOutPut=cmd::searchOutPut($conf["cmd::searchOutPut"]);
889
		unset($conf["cmd::searchOutPut"]);
889
		unset($conf["cmd::searchOutPut"]);
890
		
890
 
891
		#如果執行失敗
891
		#如果執行失敗
892
		if($searchOutPut["status"]==="false"){
892
		if($searchOutPut["status"]==="false"){
893
			
893
 
894
			#設置執行失敗
894
			#設置執行失敗
895
			$result["status"]="false";
895
			$result["status"]="false";
896
			
896
 
897
			#設置錯誤訊息
897
			#設置錯誤訊息
898
			$result["error"]=$searchOutPut;
898
			$result["error"]=$searchOutPut;
899
			
899
 
900
			#回傳結果
900
			#回傳結果
901
			return $result;
901
			return $result;
902
			
902
 
903
			}#if end
903
			}#if end
904
			
904
 
905
		#如果存在要掛載的sftp資訊與目錄
905
		#如果存在要掛載的sftp資訊與目錄
906
		if($searchOutPut["founded"]==="true"){
906
		if($searchOutPut["founded"]==="true"){
907
			
907
 
908
			#設置執行成功
908
			#設置執行成功
909
			$result["status"]="true";
909
			$result["status"]="true";
910
						
910
 
911
			#回傳結果
911
			#回傳結果
912
			return $result;
912
			return $result;
913
			
913
 
914
			}#if end
914
			}#if end
915
 
915
 
916
		#如果是 root 帳戶
916
		#如果是 root 帳戶
917
		if($conf["sftpAcct"]==="root"){
917
		if($conf["sftpAcct"]==="root"){
918
			
918
 
919
			#設置 home path
919
			#設置 home path
920
			$home="/root";
920
			$home="/root";
921
			
921
 
922
			}#if end
922
			}#if end
923
			
923
 
924
		#反之
924
		#反之
925
		else{
925
		else{
926
			
926
 
927
			#設置 home path
927
			#設置 home path
928
			$home="/home/".$conf["sftpAcct"];
928
			$home="/home/".$conf["sftpAcct"];
929
			
929
 
930
			}#else end		
930
			}#else end
931
 
931
 
932
		#掛載 sftp 到本機上的目錄
932
		#掛載 sftp 到本機上的目錄
933
		#涵式說明:
933
		#涵式說明:
934
		#呼叫shell執行系統命令,並取得回傳的內容.
934
		#呼叫shell執行系統命令,並取得回傳的內容.
935
		#回傳的結果:
935
		#回傳的結果:
Line 945... Line 945...
945
		#$result["pid"],pid
945
		#$result["pid"],pid
946
		#必填的參數
946
		#必填的參數
947
		#$conf["command"],字串,要執行的指令與.
947
		#$conf["command"],字串,要執行的指令與.
948
		$conf["external::callShell"]["command"]=$sshfs;
948
		$conf["external::callShell"]["command"]=$sshfs;
949
		#$conf["fileArgu"],字串,變數__FILE__的內容.
949
		#$conf["fileArgu"],字串,變數__FILE__的內容.
950
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];		
950
		$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
951
		#可省略參數:
951
		#可省略參數:
952
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
952
		#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
953
		$conf["external::callShell"]["argu"]=array("-o","allow_other".$conf["sftpPort"],$conf["sftpAcct"]."@".$conf["sftpAddr"].":".$home,$conf["path"],"2>&1","&","echo","$!");
953
		$conf["external::callShell"]["argu"]=array("-o","allow_other".$conf["sftpPort"],$conf["sftpAcct"]."@".$conf["sftpAddr"].":".$home,$conf["path"],"2>&1","&","echo","$!");
954
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
954
		#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
955
		$conf["external::callShell"]["arguIsAddr"]=array("false","false","false","true","false","false","false","false");
955
		$conf["external::callShell"]["arguIsAddr"]=array("false","false","false","true","false","false","false","false");
Line 985... Line 985...
985
		$callShell=external::callShell($conf["external::callShell"]);
985
		$callShell=external::callShell($conf["external::callShell"]);
986
		unset($conf["external::callShell"]);
986
		unset($conf["external::callShell"]);
987
 
987
 
988
		#如果掛載ftp目錄到本機目錄失敗
988
		#如果掛載ftp目錄到本機目錄失敗
989
		if($callShell["status"]==="false"){
989
		if($callShell["status"]==="false"){
990
			
990
 
991
			#設置執行失敗
991
			#設置執行失敗
992
			$result["status"]="false";
992
			$result["status"]="false";
993
			
993
 
994
			#設置錯誤訊息
994
			#設置錯誤訊息
995
			$result["error"]=$callShell;
995
			$result["error"]=$callShell;
996
			
996
 
997
			#回傳結果
997
			#回傳結果
998
			return $result;
998
			return $result;
999
			
999
 
1000
			}#if end
1000
			}#if end
1001
			
1001
 
1002
		#設置執行正常
1002
		#設置執行正常
1003
		$result["status"]="true";
1003
		$result["status"]="true";
1004
		
1004
 
1005
		#回傳結果
1005
		#回傳結果
1006
		return $result;
1006
		return $result;
1007
		
1007
 
1008
		}#function mountSftp end
1008
		}#function mountSftp end
1009
	
1009
 
1010
	}#class fuse end
1010
	}#class fuse end
1011
 
1011
 
1012
?>
1012
?>