Subversion Repositories php-qbpwcf

Rev

Rev 253 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

/*

        QBPWCF, Quick Build PHP website Component base on Fedora Linux.
    Copyright (C) 2014~2026 MIN ZHI, CHEN

    This file is part of QBPWCF.

    QBPWCF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    QBPWCF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.

*/
namespace qbpwcf;

/*
類別說明:
檔案存取應用的類別.
備註:
無.
*/
class fileAccess{

        /*
        #函式說明:
        #當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$reuslt["error"],執行不正常結束的錯訊息陣列.
        #$result["function"],當前執行的函式名稱.
        #必填參數:
        #$method,物件,為物件實體或類別名稱,會自動置入該參數.
        #$arguments,陣列,為呼叫方法時所用的參數.
        #參考資料:
        #__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
        */
        public function __call($method,$arguments){

                #取得當前執行的函式
                $result["function"]=__FUNCTION__;

                #設置執行不正常
                $result["status"]="false";

                #設置執行錯誤
                $result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";

                #設置所丟入的參數
                $result["error"][]=$arguments;

                #回傳結果
                return $result;

                }#function __call end

        /*
        #函式說明:
        #當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$reuslt["error"],執行不正常結束的錯訊息陣列.
        #$result["function"],當前執行的函式名稱.
        #必填參數:
        #$method,物件,為物件實體或類別名稱,會自動置入該參數.
        #$arguments,陣列,為呼叫方法時所用的參數.
        #參考資料:
        #__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
        */
        public static function __callStatic($method,$arguments){

                #取得當前執行的函式
                $result["function"]=__FUNCTION__;

                #設置執行不正常
                $result["status"]="false";

                #設置執行錯誤
                $result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";

                #設置所丟入的參數
                $result["error"][]=$arguments;

                #回傳結果
                return $result;

                }#function __callStatic end

        /*
        #函式說明:
        #將字串寫入到檔案
        #回傳結果:
        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["fileInfo"],實際上寫入的檔案資訊陣列.
        #$result["fileInfo"]["createdFileName"],建立好的檔案名稱.
        #$result["fileInfo"]["createdFilePath"],檔案建立的路徑.
        #$result["fileInfo"]["createdFilePathAndName"].建立好的檔案名稱與路徑.
        #$result["argu"],使用的參數.
        #必填參數:
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["fileName"],字串,爲要編輯的檔案名稱,預設為隨機產生的檔案名稱.
        #$conf["fileName"]="";
        #$conf["inputString"],字串,爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可,預設為"".
        #$conf["inputString"]="";
        #$conf["writeMethod"],字串,爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入.
        #$conf["writeMethod"]="a";
        #$conf["checkRepeat"],字串,"true"代表建立檔案之前要先檢查檔案是否存在,若存在則在原名稱後面加上從(1)開始的編號.
        #$conf["checkRepeat"]="";
        #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點,必須與$conf["checkRepeat"]搭配才會生效.
        #$conf["filenameExtensionStartPoint"]="";
        #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)",必須與$conf["checkRepeat"]搭配才會生效.
        #$conf["repeatNameRule"]="";
        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
        #$conf["web"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function writeTextIntoFile(&$conf){

                #初始化要回傳的變數
                $result=array();

                #初始化當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("fileName","inputString","writeMethod","checkRepeat","filenameExtensionStartPoint","repeatNameRule","web");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"","w","false",null,null,"true");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有設置 $conf["fileName"]
                if(!isset($conf["fileName"])){

                        #設定要檢查是否有重複的檔案名稱
                        $conf["checkRepeat"]="true";

                        #亂數產生檔案名稱
                        #函式說明:
                        #建立以圖片(PNG格式)呈現的驗證碼.
                        #回傳的解果:
                        #$result["status"],執行是否正常,"true"代表執行成功,"false"代表執行失敗.
                        #$result["error"],錯誤訊息.
                        #$result["function"],檔前執行的函數名稱.
                        #$result["randNumberWord"],傳驗證碼的內容.
                        #$result["imgAddress"],圖片的位置與名稱.
                        #必填參數:
                        #$conf["imgAddressAndName"],字串,爲驗證碼圖片儲存的位置與名稱,副檔名程式會自動產生
                        $conf["authenticate::validationCode"]["imgAddressAndName"]="don't need!";
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["authenticate::validationCode"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["num"],字串,爲驗證碼的位數,請輸入阿拉伯數字,預設為"8"位數.
                        $conf["authenticate::validationCode"]["num"]="10";
                        #$conf["disableImg"],字串,是否要取消驗證碼圖片的輸出,"true"為要取消,預設為"false"為不取消
                        $conf["authenticate::validationCode"]["disableImg"]="true";
                        #$conf["imgToData"],字串,預設為"true"代表將圖片轉存成base64圖片,並將原始圖片移除;反之為"false"
                        #$conf["imgToData"]="true";
                        $validationCode=authenticate::validationCode($conf["authenticate::validationCode"]);
                        unset($conf["authenticate::validationCode"]);

                        #如果亂數產生錯誤
                        if($validationCode["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$validationCode;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得產生的檔案名稱
                        $conf["fileName"]=$validationCode["randNumberWord"];

                        }#if end

                #剃除 $conf["fileName"] 開頭的 "./"
                #函式說明:
                #移除字串開頭的特定內容
                #回傳的接結果:
                #$result["status"],寄信的情況,若爲"true",則十之八九沒有問題.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數.
                #$result["content"],處理好的字串.
                #必填參數:
                #$conf["inputStr"],字串,要檢查並移除開頭有 $conf["keyWords"] 的字串.
                $conf["stringProcess::delKeyWordsInStrHead"]["inputStr"]=$conf["fileName"];
                #$conf["keyWord"],字串,要移除的字串開頭關鍵字.
                $conf["stringProcess::delKeyWordsInStrHead"]["keyWord"]="./";
                #可省略參數:
                #無.
                $delKeyWordsInStrHead=stringProcess::delKeyWordsInStrHead($conf["stringProcess::delKeyWordsInStrHead"]);
                unset($conf["stringProcess::delKeyWordsInStrHead"]);

                #如果處理失敗
                if($delKeyWordsInStrHead["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$delKeyWordsInStrHead;

                        #回傳結果
                        return $result;

                        }#if end

                #取得處理好的檔案名稱
                $conf["fileName"]=$delKeyWordsInStrHead["content"];

                #函式說明:
                #確保路徑存在.
                #回傳結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #必填參數:
                #$conf["path"],要檢查的路徑
                $conf["fileAccess::validatePath"]["path"]=$conf["fileName"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
                $conf["fileAccess::validatePath"]["haveFileName"]="true";
                #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
                #$conf["dirPermission"]="";
                $conf["fileAccess::validatePath"]["web"]=$conf["web"];
                $validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
                unset($conf["fileAccess::validatePath"]);

                #debug
                #var_dump($validatePath);exit;

                #如果確保路徑失敗
                if($validatePath["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$validatePath;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要檢查是否有同名的檔案
                if($conf["checkRepeat"]=="true"){

                        #函式說明:
                        #檢查要建立的檔案路徑是否存在,若不存在則建立新檔案,若檔案已存在則會在原檔名後面加上從(1)開始的編號,再度嘗試建立檔案,以避免資料異常.
                        #回傳的結果:
                        #$result["status"],執行狀態,"true"代表執行正常,"false"代表執行失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["createdFileName"],建立好的檔案名稱.
                        #$result["createdFilePath"],檔案建立的路徑.
                        #$result["createdFilePathAndName"].建立好的檔案名稱與路徑.
                        #必填參數:
                        #$conf["checkedFileAndPath"],字串陣列,要建立的檔案路徑
                        $conf["fileAccess::createFileAfterCheck"]["checkedFileAndPath"]=$conf["fileName"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::createFileAfterCheck"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:

                        #如果有設定 $conf["filenameExtensionStartPoint"]
                        if(isset($conf["filenameExtensionStartPoint"])){

                                #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點.
                                $conf["fileAccess::createFileAfterCheck"]["filenameExtensionStartPoint"]=$conf["filenameExtensionStartPoint"];

                                }#if end

                        #如果有設定 $conf["repeatNameRule"]
                        if(isset($conf["repeatNameRule"])){

                                #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)".
                                $conf["fileAccess::createFileAfterCheck"]["repeatNameRule"]=$conf["repeatNameRule"];

                                }#if end

                        #如果有設定 $conf["web"] 參數
                        if(isset($conf["web"])){

                                $conf["fileAccess::createFileAfterCheck"]["web"]=$conf["web"];

                                }#if end

                        $createFileAfterCheck=fileAccess::createFileAfterCheck($conf["fileAccess::createFileAfterCheck"]);
                        unset($conf["fileAccess::createFileAfterCheck"]);

                        #debug
                        #var_dump($createFileAfterCheck);
                        #exit;

                        #如果嘗試建立檔案失敗
                        if($createFileAfterCheck["status"]=="false"){

                                #設置執行不正常
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$createFileAfterCheck;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得建立的檔案資訊
                        $result["fileInfo"]["createdFilePathAndName"]=$createFileAfterCheck["createdFilePathAndName"];
                        $result["fileInfo"]["createdFilePath"]=$createFileAfterCheck["createdFilePath"];
                        $result["fileInfo"]["createdFileName"]=$createFileAfterCheck["createdFileName"];

                        #取得建立好的檔案路徑與名稱
                        $conf["fileName"]=$createFileAfterCheck["createdFilePathAndName"];

                        }#if end

                #反之沒有要檢查檔案是否存在
                else{

                        #取得建立的檔案資訊
                        $result["fileInfo"]["createdFilePathAndName"]=$conf["fileName"];
                        $result["fileInfo"]["createdFilePath"]=$validatePath["path"];
                        $result["fileInfo"]["createdFileName"]=$validatePath["fileName"];

                        }#else end

                #設定要寫入或複寫的檔案
                $fileopenResult=fopen($conf["fileName"],$conf["writeMethod"]);

                #如果 $fileopenResult 等於 FALSE
                if($fileopenResult==FALSE){

                        #設置錯誤識別
                        $result["status"]="false";

                        #代表打開檔案失敗
                        $result["error"][]="檔案".$conf["fileName"]."開啟失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #將資料寫入到檔案裡面
                $fwriteResult=fwrite($fileopenResult,$conf["inputString"]);

                #如果 $fwriteResult 等於 FALSE
                if($fwriteResult!=0 && $fwriteResult==FALSE){

                        #設置錯誤識別
                        $result["status"]="false";

                        #代表檔案寫入失敗
                        $result["error"][]="檔案".$conf["fileName"]."寫入失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #存檔並關閉檔案
                $fcloseResult=fclose($fileopenResult);

                #如果 $fcloseResult 等於 FALSE
                if($fcloseResult==FALSE){

                        #設置錯誤識別
                        $result["status"]="false";

                        #代表檔案寫入失敗
                        $result["error"][]="檔案".$conf["fileName"]."儲存失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #檢查用來寫入的檔案是否存在
                #函式說明:檢查多個檔案與資料夾是否存在
                #回傳的結果:
                #$result["varName"][$i],爲第$i個變數的名稱。
                #$result["varExist"][$i],爲第$i個變數是否存在,true代表存在,false代表不存在。
                #必填參數:
                $conf["fileAccess::checkMutiFileExist"]["fileArray"]=array($conf["fileName"]);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false".
                $conf["fileAccess::checkMutiFileExist"]["web"]=$conf["web"];
                #參考資料來源:
                #http:#php.net/manual/en/function.file-exists.php
                #http:#php.net/manual/en/control-structures.foreach.php
                $fileAccess["checkMutiFileExist"]=fileAccess::checkMultiFileExist($conf["fileAccess::checkMutiFileExist"]);
                unset($conf["fileAccess::checkMutiFileExist"]);

                #如果檢查檔案是否存在失敗
                if($fileAccess["checkMutiFileExist"]["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息陣列
                        $result["error"]=$fileAccess["checkMutiFileExist"];

                        #回傳結果
                        return $result;

                        }#if end

                #如果$fileAccess["checkMutiFileExist"]["varExist"][0] 等於 "false"
                if($fileAccess["checkMutiFileExist"]["varExist"][0]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$fileAccess["checkMutiFileExist"];

                        #設置錯誤訊息陣列
                        $result["error"][]="愈建立的檔案不存在";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #依據取得檔案的擁有着資訊
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],檔案擁有着資訊.
                #$result["content"],檔案資訊陣列.
                #$result["content"]["is_folder"],是否為目錄,"true"代表是,"false"代表不是.
                #$result["content"]["ownerPerm"],檔案擁有者權限資訊.
                #$result["content"]["groupPerm"],檔案歸屬群組權限資訊.
                #$result["content"]["otherPerm"],檔案對於其他身份使用者的權限資訊.
                #$result["content"]["subElementCount"],目錄底下的檔案目錄數量.
                #$result["content"]["ownerName"],檔案擁有着資訊.
                #$result["content"]["groupName"],檔案所屬擁有着資訊.
                #$result["content"]["size"],檔案大小.
                #$result["content"]["modifyDate"],檔案變更年月日.
                #$result["content"]["modifyTime"],檔案變更時分秒.
                #$result["content"]["modifyTimeFloat"],檔案變更時間秒的float數值.
                #$result["content"]["timezone"],檔案變更時間的時區與UTC的差距.
                #必填參數:
                #$conf["fileArgu"],字串,當前檔案的位置亦即__FILE__的內容.
                $conf["fileAccess::fileInfo"]["fileArgu"]=$conf["fileArgu"];
                #$conf["file"],字串,要查看擁有者資訊的檔案.
                $conf["fileAccess::fileInfo"]["file"]=$conf["fileName"];
                #可省略參數:
                #$conf["fileToRead"],字串,要讀取的檔案名稱為何?預設為"help".
                #$conf["fileToRead"]="help";
                #$conf["output"],字串,輸出的網頁檔案位置與名稱,副檔名html會自動補上,預設為"help".
                #$conf["output"]="help.html";
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false".
                $conf["fileAccess::fileInfo"]["web"]=$conf["web"];
                #參考資料:
                #fileowner=>http://php.net/manual/en/function.fileowner.php
                #posix_getpwuid=>http://php.net/manual/en/function.posix-getpwuid.php
                $fileInfo=fileAccess::fileInfo($conf["fileAccess::fileInfo"]);
                unset($conf["fileAccess::fileInfo"]);

                #如果取得檔案資訊失敗
                if($fileInfo["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$fileInfo;

                        #回傳結果
                        return $result;

                        }#if end

                #取得檔案的擁有者名稱
                $fileOwner=$fileInfo["content"]["ownerName"];

                #執行php的帳戶
                $runner=csInformation::runner();

                #如果執行php的使用者等於檔案的擁有者名稱或為root
                if($runner===$fileOwner || $runner==="root"){

                        #改變檔案的權限為0770
                        chmod($conf["fileName"],0770);

                        }#if end

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function writeTextIntoFile end

        /*
        #函式說明:
        #一次建立多個檔案,並寫入內容.
        #回傳結果:
        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"][i],實際上寫入的第$i+1個檔案資訊陣列.
        #$result["content"][i]["createdFileName"],第$i+1個建立好的檔案名稱.
        #$result["content"][i]["createdFilePath"],第$i+1個檔案建立的路徑.
        #$result["content"][i]["createdFilePathAndName"].第$i+1個建立好的檔案名稱與路徑.
        #$result["argu"],使用的參數.
        #必填參數:
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #$conf["fileName"],字串陣列,爲要寫入的多個檔案名稱
        $conf["fileName"]=array("");
        #可省略參數:
        #$conf["inputString"],字串陣列,爲要寫入到各別檔案裏面的內容,預設每個元素為空字串.
        #$conf["inputString"]=array("");
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function writeMultiFile(&$conf){

                #初始化要回傳的變數
                $result=array();

                #初始化當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","fileName");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("inputString");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                $conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("fileName","inputString");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有設定要個別寫入的內容
                if(!isset($conf["inputString"])){

                        #針對每個檔案名稱
                        for($i=0;$i<count($conf["fileName"]);$i++){

                                #建立空的 $conf["inputString"]
                                $conf["inputString"][$i]="";

                                }#for end

                        }#if end

                #針對每個要寫入的檔案
                foreach($conf["fileName"] as $index => $file2writre){

                        #取得要寫入的內容
                        $content2writre=$conf["inputString"][$index];

                        #函式說明:
                        #將字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["fileInfo"],實際上寫入的檔案資訊陣列.
                        #$result["fileInfo"]["createdFileName"],建立好的檔案名稱.
                        #$result["fileInfo"]["createdFilePath"],檔案建立的路徑.
                        #$result["fileInfo"]["createdFilePathAndName"].建立好的檔案名稱與路徑.
                        #$result["argu"],使用的參數.
                        #必填參數:
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱,預設為隨機產生的檔案名稱.
                        $conf["fileAccess::writeTextIntoFile"]["fileName"]=$file2writre;
                        #$conf["inputString"],字串,爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可,預設為"".
                        $conf["fileAccess::writeTextIntoFile"]["inputString"]=$content2writre;
                        #$conf["writeMethod"],字串,爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入.
                        #$conf["writeMethod"]="a";
                        #$conf["checkRepeat"],字串,"true"代表建立檔案之前要先檢查檔案是否存在,若存在則在原名稱後面加上從(1)開始的編號.
                        #$conf["checkRepeat"]="";
                        #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點,必須與$conf["checkRepeat"]搭配才會生效.
                        #$conf["filenameExtensionStartPoint"]="";
                        #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)",必須與$conf["checkRepeat"]搭配才會生效.
                        #$conf["repeatNameRule"]="";
                        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                        $conf["fileAccess::writeTextIntoFile"]["web"]="false";
                        #備註:
                        #無.
                        $writeTextIntoFile=fileAccess::writeTextIntoFile($conf["fileAccess::writeTextIntoFile"]);
                        unset($conf["fileAccess::writeTextIntoFile"]);

                        #如果建立檔案失敗
                        if($writeTextIntoFile["status"]==="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$writeTextIntoFile;

                                #回傳結果
                                return $result;

                                }#if end

                        #設置建立好的檔案資訊
                        $result["content"][]=$writeTextIntoFile["fileInfo"];

                        }#foreach end

                        #設置執行正常
                        $result["status"]="true";

                        #回傳結果
                        return $result;

                }#function writeMultiFile end

        /*
        #函式說明:
        #將多行字串寫入到檔案
        #回傳結果:
        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行函數的名稱.
        #必填參數:
        #$conf["fileName"],字串,爲要編輯的檔案名稱
        $conf["fileName"]="";
        #$conf["inputString"],字串陣列,爲要寫入到 $conf["fileName"] 裏面的內容. $conf["inputString"][$i] 代表第 $i+1 行。
        $conf["inputString"]=array("");
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["writeMethod"],字串,爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
        #$conf["writeMethod"]="a";
        #$conf["fastWrite"],字串,“true”代表要一次寫入多行內容;預設為"false"代表一次寫入一行,比較安全,但行數一多會需要等待多時.
        #$conf["fastWrite"]="false";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function writeMultiLine(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查必填參數
                #函式說明:
                #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                $conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
                $conf["variableCheck.isexistMulti"]["variableCheck"]=array("fileName","inputString","fileArgu");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                #可以省略的參數:
                $conf["variableCheck.isexistMulti"]["variableType"]=array("string","array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
                $conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                $checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
                unset($conf["variableCheck.isexistMulti"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查可省略參數
                #函式說明:
                #檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
                #必填參數:
                #$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
                $conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
                #$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
                $conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("writeMethod","fastWrite");
                #$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
                $conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("string","string");
                #$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
                $argu=&$conf;
                #可省略參數:
                #$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
                $conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("w","false");
                #無
                $checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
                unset($conf["variableCheck.checkSkipableVarType"]);

                #如果檢查不通過
                if($checkResult["status"]=="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果有設置快速寫入
                if($conf["fastWrite"]==="true"){

                        #初始化要寫入的字串
                        $inputStrAll="";

                        #有幾行字要寫就執行幾次
                        foreach($conf["inputString"] as $inputStr){

                                #附加 "\r\n"
                                $inputStrAll=$inputStrAll.$inputStr.PHP_EOL;

                                }#foreach end

                        #函式說明:
                        #將字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #必填參數:
                        $conf["fileAccess.writeTextIntoFile"]["fileName"]=$conf["fileName"];#爲要編輯的檔案名稱
                        $conf["fileAccess.writeTextIntoFile"]["inputString"]=$inputStrAll;#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess.writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        $conf["fileAccess.writeTextIntoFile"]["writeMethod"]=$conf["writeMethod"];#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                        $conf["fileAccess.writeTextIntoFile"]["web"]="false";
                        $writeStatus=fileAccess::writeTextIntoFile($conf["fileAccess.writeTextIntoFile"]);
                        unset($conf["fileAccess.writeTextIntoFile"]);

                        #如果寫入失敗
                        if($writeStatus["status"]=="false"){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$writeStatus;

                                #回傳結果
                                return $result;

                                }#if end

                        #設置執行正常
                        $result["status"]="true";

                        #回傳結果
                        return $result;

                        }#if end

                #初始化第一次寫入識別變數
                $firstTimeToWrite="true";

                #有幾行字要寫就執行幾次
                foreach($conf["inputString"] as $inputStr){

                        #附加 "\r\n"
                        $inputStr=$inputStr.PHP_EOL;

                        #如果是第一次寫入
                        if($firstTimeToWrite=="true"){

                                #如果是要重新寫入
                                if($conf["writeMethod"]==="w"){

                                        #函式說明:
                                        #將字串寫入到檔案
                                        #回傳結果:
                                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #必填參數:
                                        $conf["fileAccess.writeTextIntoFile"]["fileName"]=$conf["fileName"];#爲要編輯的檔案名稱
                                        $conf["fileAccess.writeTextIntoFile"]["inputString"]=$inputStr;#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                        $conf["fileAccess.writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        $conf["fileAccess.writeTextIntoFile"]["writeMethod"]="w";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                                        $conf["fileAccess.writeTextIntoFile"]["web"]="false";
                                        $writeStatus=fileAccess::writeTextIntoFile($conf["fileAccess.writeTextIntoFile"]);
                                        unset($conf["fileAccess.writeTextIntoFile"]);

                                        #如果寫入失敗
                                        if($writeStatus["status"]=="false"){

                                                #設置執行錯誤
                                                $result["status"]="false";

                                                #設置執行錯誤訊息
                                                $result["error"]=$writeStatus;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        }#if end

                                #反之不是重新寫入,而是附加寫入。
                                else{

                                        #函式說明:
                                        #將字串寫入到檔案
                                        #回傳結果:
                                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #必填參數:
                                        $conf["fileAccess.writeTextIntoFile"]["fileName"]=$conf["fileName"];#爲要編輯的檔案名稱
                                        $conf["fileAccess.writeTextIntoFile"]["inputString"]=$inputStr;#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                        $conf["fileAccess.writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        $conf["fileAccess.writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                                        $conf["fileAccess.writeTextIntoFile"]["web"]="false";
                                        $writeStatus=fileAccess::writeTextIntoFile($conf["fileAccess.writeTextIntoFile"]);
                                        unset($conf["fileAccess.writeTextIntoFile"]);

                                        #如果寫入失敗
                                        if($writeStatus["status"]=="false"){

                                                #設置執行錯誤
                                                $result["status"]="false";

                                                #設置執行錯誤訊息
                                                $result["error"]=$writeStatus;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        }#else end

                                #將之設為不是第一次寫入
                                $firstTimeToWrite="false";

                                }#if end

                        #反之不是第一次寫入
                        else{

                                #函式說明:
                                #將字串寫入到檔案
                                #回傳結果:
                                #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                                #$result["error"],錯誤訊息陣列.
                                #必填參數:
                                $conf["fileAccess.writeTextIntoFile"]["fileName"]=$conf["fileName"];#爲要編輯的檔案名稱
                                $conf["fileAccess.writeTextIntoFile"]["inputString"]=$inputStr;#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                $conf["fileAccess.writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                                #可省略參數:
                                $conf["fileAccess.writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                                $conf["fileAccess.writeTextIntoFile"]["web"]="false";
                                $writeStatus=fileAccess::writeTextIntoFile($conf["fileAccess.writeTextIntoFile"]);
                                unset($conf["fileAccess.writeTextIntoFile"]);

                                #如果寫入失敗
                                if($writeStatus["status"]=="false"){

                                        #設置執行錯誤
                                        $result["status"]="false";

                                        #設置執行錯誤訊息
                                        $result["error"]=$writeStatus;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                }#else end

                        }#foreach end

                #執行到這邊代表一切正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function writeMultiLine end

        /*
        #函式說明:
        #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
        #回傳的變數說明:
        #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
        #$result["error"],錯誤訊息提示.
        #$result["warning"],警告訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["fileContent"],爲檔案的內容陣列.
        #$result["lineCount"],爲檔案內容總共的行數.
        #$result["fullContent"],為檔案的完整內容.
        #$result["base64dataOnly"],檔案的base64data.
        #$result["base64data"],為在網頁上給予src參數的數值.
        #$result["mimeType"],為檔案的mime type.
        #必填參數:
        #$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
        $conf["filePositionAndName"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["web"],是要取得網路上的檔案則為"true";反之預設為"false".
        #$conf["web"]="true";
        #$conf["createIfnotExist"],字串,預設為"false"代表檔案不存在也不需要建立;反之為"true".
        #$conf["createIfnotExist"]="false";
        #$conf["autoDeleteSpaceOnEachLineStart"],字串,預設為"false",不做額外處理;反之為"true"
        #$conf["autoDeleteSpaceOnEachLineStart"]="false";
        #參考資料:
        #file(),取得檔案內容的行數.
        #file=>http:#php.net/manual/en/function.file.php
        #rtrim(),剔除透過file()取得每行內容結尾的換行符號.
        #filesize=>http://php.net/manual/en/function.filesize.php
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getFileContent(&$conf){

                #初始化要回傳的內容
                $result=array();

                #取得當前執行函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],執行不正常結束的錯訊息陣列.
                #$result["simpleError"],簡單表示的錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可省略參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("filePositionAndName","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("createIfnotExist","web","autoDeleteSpaceOnEachLineStart");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("createIfnotExist","web","autoDeleteSpaceOnEachLineStart");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","false","false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
                #$conf["disallowAllSkipableVarNotExist"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #備註:
                #無.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查出錯
                if($checkArguments["status"]==="false"){

                        #設置執行錯誤識別
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行錯誤識別
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查檔案是否存在
                #函式說明:檢查多個檔案與資料夾是否存在
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                $conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($conf["filePositionAndName"]);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                $conf["fileAccess"]["checkMutiFileExist"]["disableWebSearch"]="true";

                #如果有設置 $conf["web"]
                if(isset($conf["web"])){

                        #設置 web 參數.
                        $conf["fileAccess"]["checkMutiFileExist"]["web"]=$conf["web"];

                        }#if end

                #參考資料來源:
                #http:#php.net/manual/en/function.file-exists.php
                #http:#php.net/manual/en/control-structures.foreach.php
                $fileCheckResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);
                unset($conf["fileAccess"]["checkMutiFileExist"]);

                #如果檢查檔案是否存在出錯
                if($fileCheckResult["status"]=="false"){

                        #設置執行錯誤識別
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$fileCheckResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果該檔案不存在
                if($fileCheckResult["varExist"][0]=="false"){

                        #如果也不要自動建立檔案
                        if($conf["createIfnotExist"]==="false"){

                                #設置執行錯誤識別
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$fileCheckResult;

                                #設置易讀的錯誤訊息
                                $result["error"][]="名為".$fileCheckResult["varName"][0]."的檔案不存在";

                                #回傳結果
                                return $result;

                                }#if end

                        #執行到這邊代表需要建立該檔案
                        #函式說明:
                        #將字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["fileInfo"],實際上寫入的檔案資訊陣列.
                        #$result["fileInfo"]["createdFileName"],建立好的檔案名稱.
                        #$result["fileInfo"]["createdFilePath"],檔案建立的路徑.
                        #$result["fileInfo"]["createdFilePathAndName"].建立好的檔案名稱與路徑.
                        #$result["argu"],使用的參數.
                        #必填參數:
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱,預設為隨機產生的檔案名稱.
                        $conf["fileAccess::writeTextIntoFile"]["fileName"]=$fileCheckResult["varNameFullPath"][0];
                        #$conf["inputString"],字串,爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可,預設為"".
                        $conf["fileAccess::writeTextIntoFile"]["inputString"]="";
                        #$conf["checkRepeat"],字串,"true"代表建立檔案之前要先檢查檔案是否存在,若存在則在原名稱後面加上從(1)開始的編號.
                        #$conf["checkRepeat"]="";
                        #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點,必須與$conf["checkRepeat"]搭配才會生效.
                        #$conf["filenameExtensionStartPoint"]="";
                        #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)",必須與$conf["checkRepeat"]搭配才會生效.
                        #$conf["repeatNameRule"]="";

                        #如果有設置 $conf["web"]
                        if(isset($conf["web"])){

                                #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                                $conf["fileAccess::writeTextIntoFile"]["web"]=$conf["web"];

                                }#if end

                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $writeTextIntoFile=fileAccess::writeTextIntoFile($conf["fileAccess::writeTextIntoFile"]);
                        unset($conf["fileAccess::writeTextIntoFile"]);

                        #如果建立檔案失敗
                        if($writeTextIntoFile["status"]=="false"){

                                #設置執行錯誤識別
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$writeTextIntoFile;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #file absolute addr
                $fileAbAddr=$fileCheckResult["varNameFullPath"][0];

                #將檔案的內容放進變數裡面(會得到陣列)
                $fileContent=file($fileAbAddr);

                #如果 $fileContent 等於
                if($fileContent==FALSE){

                        #如果檔案大小為0bytes
                        if(filesize($fileAbAddr)==0){

                                #設置錯誤識別
                                $result["warning"][]="執行結果沒有輸出內容";

                                }#if end

                        #反之檔案有內容
                        else{

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"][]="讀取檔案失敗";

                                #取得詳細的錯誤訊息
                                $result["error"][]=$fileCheckResult;

                                #回傳結果
                                return $result;

                                }#else end

                        }#if end

                #針對每行內容
                for($i=0;$i<count($fileContent);$i++){

                        #剔除字串尾的換行符號
                        $fileContent[$i]=rtrim($fileContent[$i]);

                        #如果要移除開頭的空白
                        if($conf["autoDeleteSpaceOnEachLineStart"]==="true"){

                                #如果開頭是空格
                                while(strpos($fileContent[$i]," ")===0){

                                        #函式說明:
                                        #將字串特定關鍵字與其前面的內容剔除
                                        #回傳結果:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["warning"],警告訊息鎮列.
                                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["argu"],使用的參數.
                                        #$result["oriStr"],要處理的原始字串內容.
                                        #$result["content"],處理好的的字串內容.
                                        #必填參數:
                                        #$conf["stringIn"],字串,要處理的字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$fileContent[$i];
                                        #$conf["keyWord"],字串,特定字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=" ";
                                        #可省略參數:
                                        #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
                                        #$conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
                                        #$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
                                        #$conf["lastResult"]=$delStrBeforeKeyWord;
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                        #如果建立檔案失敗
                                        if($delStrBeforeKeyWord["status"]=="false"){

                                                #設置執行錯誤識別
                                                $result["status"]="false";

                                                #設置執行錯誤訊息
                                                $result["error"]=$delStrBeforeKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #取得剔除開頭空格後的內容
                                        $fileContent[$i]=$delStrBeforeKeyWord["content"];

                                        }#while end

                                }#if end

                        }#for end

                #取得總共有幾行
                $lineCount=count($fileContent);

                #將檔案內容的陣列放進 $result 陣列變數裏面
                $result["fileContent"]=$fileContent;

                #建立暫存檔案
                $tmpFile=tempnam("/tmp", "qbpwcf");

                #讀取要取得的檔案內容
                $content=file_get_contents($fileAbAddr);

                #開啟暫存檔案(寫入模式)
                $file=fopen($tmpFile,'w');

                #寫入讀取到的內容
                fwrite($file,$content);

                #關閉暫存檔案
                fclose($file);

                #取得檔案的 mime 類型
                $mimeType=mime_content_type($tmpFile);

                #設置檔案的mime類型
                $result["mimeType"]=$mimeType;

                #取得檔案的內容為字串
                $result["fullContent"]=file_get_contents($tmpFile);

                #取得檔案的base64data
                $result["base64dataOnly"]=base64_encode($result["fullContent"]);

                #取得檔案用 data:mimeType;base64,base64data 表示的字串
                $result["base64data"]="data:".$result["mimeType"].";base64,".$result["base64dataOnly"];

                #移除暫存檔案
                unlink($tmpFile);

                #將檔案內容的行數放進 $result 陣列變數裏面
                $result["lineCount"]=$lineCount;

                #執行到這邊代表執行成功
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getFileContent end

        /*
        #函式說明:
        #依據逗號分隔抓取檔案的內容,結果會回傳一個陣列
        #回傳結果:
        #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
        #$result["error"],錯誤訊息提示.
        #$result["function"],函數名稱.
        #$result["lineCount"]爲總共有幾行
        #$result["lineContent"][i]["dataCounts"],爲第 i+1 行總共有幾個字串
        #$result["lineContent"][0][i],爲第1行第 i+1 個分割好的字串
        #$result["lineContent"][1][i],爲第2行第 i+1 個分割好的字串
        #必填參數:
        #$conf["filePositionAndName"],字串,要抓取的檔案位置與名稱
        $conf["filePositionAndName"]="";
        #可省略參數:
        #$conf["spiltSign"],字串,爲要用來分割字串的符號,可省略,預設爲「,」
        #$conf["spiltSign"]="";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getFileContentSpiltBySomething(&$conf){

                #初始化要回傳的內容
                $result=array();

                #取得當前執行函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["spiltSign"] 爲空,則預設爲","。
                if(!isset($conf["spiltSign"])){

                        $conf["spiltSign"]=",";

                        }#if end

                #依據行號抓取所有的內容
                #函式說明:
                #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                #回傳的變數說明:
                #$result["fileContent"],爲檔案的內容陣列
                #$result["lineCount"],爲檔案內容總共的行數
                #必填參數:
                $conf["fileAccess"]["getFileContent"]["filePositionAndName"]=$conf["filePositionAndName"];#爲檔案的位置以及名稱
                #參考資料:
                #file():取得檔案內容的行數
                #http:#php.net/manual/en/function.file.php
                $fileContent=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
                unset($conf["fileAccess"]["getFileContent"]);

                #如果取得檔案內容失敗
                if($fileContent["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$fileContent;

                        #回傳結果
                        return $result;

                        }#if end

                #迴圈,有幾行資料就執行幾次
                for($i=0;$i<$fileContent["lineCount"];$i++){

                        #將該行內容用逗號分隔
                        $conf["stringProcess"]["spiltString"]["stringIn"]=$fileContent["fileContent"][$i];#要處理的字串。
                        $conf["stringProcess"]["spiltString"]["spiltSymbol"]=$conf["spiltSign"];#爲以哪個符號作爲分割
                        $lineSpiltResult[$i]=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
                        unset($conf["stringProcess"]["spiltString"]);

                        #如果分割字串失敗
                        if($lineSpiltResult[$i]["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$lineSpiltResult[$i];

                                #回傳結果
                                return $result;

                                }#if end

                        }#for end

                #取得
                $result["lineContent"]=$lineSpiltResult;

                #取得資料的行數
                $result["lineCount"]=$fileContent["lineCount"];

                #回傳結果
                return $result;

                }#function getFileContentSpiltBySomething end

        /*
        #函式說明:
        #檢查多個檔案與資料夾是否存在.
        #回傳的結果:
        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息陣列.
        #$resutl["function"],當前執行的涵式名稱.
        #$result["argu"],使用的參數.
        #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
        #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
        #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
        #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址,若"web"參數為"true",才會有該內容.
        #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
        #必填參數:
        #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
        $conf["fileArray"]=array();
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
        #$conf["disableWebSearch"]="false";
        #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
        #$conf["userDir"]="true";
        #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
        #$conf["web"]="true";
        #參考資料:
        #http://php.net/manual/en/function.file-exists.php
        #http://php.net/manual/en/control-structures.foreach.php
        #備註:
        #函數file_exists檢查的路徑為檔案系統的路徑
        #$result["varName"][$i]結果未實作
        */
        public static function checkMultiFileExist(&$conf){

                #初始化要回傳的變數
                $result=array();

                #設置當前執行的涵式
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArray","fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("disableWebSearch","userDir","web");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","true","true");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存每個檔案是否存在的陣列變數
                $result["varName"]=array();
                $result["varExist"]=array();

                #針對每個要檢查的檔案
                foreach($conf["fileArray"] as $i=>$varName){

                        #儲存要判斷是否存在的物件
                        $result["varName"][]=$varName;

                        #函式說明:
                        #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                        #回傳結果:
                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["content"],網址,若是在命令列執行,則為"null".
                        #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                        #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                        #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                        #必填參數:
                        #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                        $conf["fileAccess::getInternetAddressV2"]["address"]=$varName;
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                        $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        $conf["fileAccess::getInternetAddressV2"]["web"]=$conf["web"];
                        #備註:
                        #建構中,fileSystemRelativePosition尚未實作.
                        $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                        unset($conf["fileAccess::getInternetAddressV2"]);

                        #如果轉換成絕對路徑失敗
                        if($getInternetAddressV2["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$getInternetAddressV2;

                                #回傳結果
                                return $result;

                                }#if end

                        #傳參考
                        $getInternetAddress=&$getInternetAddressV2;

                        #如果沒有檔案的絕對路徑位置
                        if(!isset($getInternetAddress["fileSystemAbsoulutePosition"])){

                                #置換成給予的參數網址
                                $conf["fileArray"][$i]=$getInternetAddress["content"];

                                #設置無法從檔案系統找到
                                $exist=FALSE;

                                }#if end

                        #反之取得
                        else{

                                #轉換好的絕對路徑
                                $conf["fileArray"][$i]=$getInternetAddress["fileSystemAbsoulutePosition"];

                                #無窮迴圈
                                while(true){

                                        #判斷該檔案是否存在
                                        $exist=file_exists($conf["fileArray"][$i]);

                                        #如果不存在
                                        if($exist===false){

                                                #無窮迴圈
                                                while(true){

                                                        #當要檢查的目標是 link 時
                                                        if(is_link($conf["fileArray"][$i])){

                                                                #取得link的路徑
                                                                $conf["fileArray"][$i]=readlink($conf["fileArray"][$i]);

                                                                #結束連結的判斷,回到判斷目標是否存在的地方.
                                                                continue 2;

                                                                }#if end

                                                        #結束連結的判斷
                                                        break;

                                                        }#while end

                                                }#if end

                                        #結束到判斷目標是否存在
                                        break;

                                        }#while end

                                }#else end

                        #如果 $exist 等於 false (檔案不存在) 且 沒有停用網路搜尋功能
                        if($exist===FALSE && $conf["disableWebSearch"]==="false"){

                                #將目標轉換成網址
                                #函式說明:
                                #將檔案的位置名稱變成網址
                                #回傳結果:
                                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],函數名稱.
                                #$result["content"],網址.
                                #必填參數:
                                #$conf["address"],字串,檔案的相對位置.
                                $conf["fileAccess::getInternetAddress"]["address"]=$conf["fileArray"][$i];
                                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                                $conf["fileAccess::getInternetAddress"]["fileArgu"]=$conf["fileArgu"];
                                $getInternetAddress=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddress"]);
                                unset($conf["fileAccess::getInternetAddress"]);

                                #如果轉換失敗
                                if($getInternetAddress["status"]=="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$getInternetAddress;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #函式說明:
                                #運行curl cmd
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],當前執行的函式名稱.
                                #$result["content"],取得的回應內容.
                                #$result["cookie"],cookie檔案的位置與名稱.
                                #$result["cmd"],執行的command.
                                #$result["argu],使用的參數.
                                #必填參數:
                                #$conf["url"],字串,目標url.
                                $conf["catchWebContent::curlCmd"]["url"]=$getInternetAddress["content"];
                                #$conf["fileArgu"],字串,變數__FILE__的內容.
                                $conf["catchWebContent::curlCmd"]["fileArgu"]=$conf["fileArgu"];
                                #可省略參數:
                                #$conf["header"],字串陣列,要傳送的header.
                                #$conf["header"]=array();
                                #$conf["allowAnySSLcertificate"],字串,是否允許不可信任的SSL憑證,預設為"true".
                                #$conf["allowAnySSLcertificate"]="";
                                #$conf["postVar"],字串陣列,每個要傳送的post變數名稱(陣列的key值)與數值.
                                #$conf["postVar"]=array();
                                #$conf["rawPost"]="字串",要傳送的raw post內容.
                                #$conf["rawPost"]="";
                                #$conf["urlEncode"],字串,post的內容是否要url_encode,"true"代表要,預設為"false"代表不要.
                                #$conf["urlEncode"]="false";
                                #$conf["agent"],字串,user agent的名稱.
                                #$conf["agent"]="";
                                #$conf["cookie"],字串,cookie位置與檔案位置.
                                #$conf["cookie"]="";
                                #$conf["forceNewCookie"],字串,是否要重置cookie,"true"代表要,"false"代表不要,預設為"false".
                                #$conf["forceNewCookie"]="";
                                $curlCmd=catchWebContent::curlCmd($conf["catchWebContent::curlCmd"]);
                                unset($conf["catchWebContent::curlCmd"]);

                                #如果抓取資料失敗
                                if($curlCmd["status"]==="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$curlCmd;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #反之檔案存在網路上
                                else{

                                        #將該檔案的路徑名稱與是否存在的訊息儲存到 $result 陣列變數裏面
                                        $result["varName"][$i]=$getInternetAddress["content"];

                                        #如果存在檔案路徑的絕對位置
                                        if(isset($getInternetAddress["fileSystemAbsoulutePosition"])){

                                                #設置該檔案的絕對路徑位置
                                                $result["varNameFullPath"][$i]=$getInternetAddress["fileSystemAbsoulutePosition"];

                                                }#if end

                                        #反之代表輸入參數是網址
                                        else{

                                                #設置該檔案的網址
                                                $result["varNameWebPath"][$i]=$getInternetAddress["content"];

                                                }#else end

                                        #設置有無找到的識別
                                        $result["varExist"][$i]=$curlCmd["founded"];

                                        }#else end

                                }#if end

                        #反之檔案不存在,且停用網路搜尋.
                        else if($exist===FALSE){

                                #將該檔案的路徑名稱與是否存在的訊息儲存到 $result 陣列變數裏面
                                $result["varName"][$i]=$conf["fileArray"][$i];
                                $result["varNameFullPath"][$i]=$conf["fileArray"][$i];
                                $result["varExist"][$i]="false";

                                #設置全部檔案都存在的識別變數為 "false"
                                $result["allExist"]="false";

                                }#if end

                        #反之代表檔案存在
                        else{

                                #將該檔案的路徑名稱與是否存在的訊息儲存到 $result 陣列變數裏面
                                $result["varNameFullPath"][$i]=$conf["fileArray"][$i];

                                #如果 web 參數為 "true"
                                if($conf["web"]==="true"){

                                        #設置網路上的位置
                                        $result["varNameWebPath"][$i]=$getInternetAddress["content"];

                                        }#if end

                                $result["varExist"][$i]="true";

                                }#else end

                        }#foreach end

                #如果所有檔案與資料夾都找到的識別變數不存在
                if(!isset($result["allExist"])){

                        #設置全部檔案與資料夾都有找到
                        $result["allExist"]="true";

                        }#if end

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function checkMutiFileExist

        /*
        #函式說明:
        #檢查要建立的檔案路徑是否存在,若不存在則建立新檔案,若檔案已存在則會在原檔名後面加上從(1)開始的編號,再度嘗試建立檔案,以避免資料異常.
        #回傳結果:
        #$result["status"],執行狀態,"true"代表執行正常,"false"代表執行失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],使用的參數.
        #$result["createdFileName"],建立好的檔案名稱.
        #$result["createdFilePath"],檔案建立的路徑.
        #$result["createdFilePathAndName"].建立好的檔案名稱與路徑.
        #必填參數:
        #$conf["checkedFileAndPath"],字串陣列,要建立的檔案路徑
        $conf["checkedFileAndPath"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點.
        #$conf["filenameExtensionStartPoint"]="";
        #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)".
        #$conf["repeatNameRule"]="";
        #$conf["web"],"true"代表為網頁系統,"false"代表檔案系統,預設為"false".
        #$conf["web"]="false";
        #參考資料:
        #無.
        #備註:
        #如果要在/tmp底下建立檔案,若在apache環境下則會被作業系統特殊處理,即不等於實際上的路徑.
        */
        public static function createFileAfterCheck(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當前執行的涵式
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","checkedFileAndPath");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("filenameExtensionStartPoint","repeatNameRule","web");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("1","(\$i)","false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #確保要建立檔案的路徑
                #函式說明:
                #確保路徑存在.
                #回傳結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["path"],建立好的路徑字串.
                #$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
                #必填參數:
                #$conf["path"],要檢查的路徑
                $conf["fileAccess::validatePath"]["path"]=$conf["checkedFileAndPath"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
                $conf["fileAccess::validatePath"]["haveFileName"]="true";
                #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
                #$conf["dirPermission"]="";
                $conf["fileAccess::validatePath"]["web"]=$conf["web"];
                $validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
                unset($conf["fileAccess::validatePath"]);

                #debug
                #var_dump($validatePath);
                #exit;

                #如果確保路徑失敗
                if($validatePath["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$validatePath;

                        #回傳結果
                        return $result;

                        }#if end

                #取得要建立的檔案名稱
                $createdFileName=$validatePath["fileName"];

                #取得要建立的路徑
                $createdFilePath=$validatePath["path"];

                #透過無窮迴圈嘗試建立不同編號的檔案
                for($i=0;$i>-1;$i++){

                        #如果 $i 為 0
                        if($i==0){

                                #檢查該檔案是否存在
                                #函式說明:
                                #檢查多個檔案與資料夾是否存在.
                                #回傳的結果:
                                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                                #必填參數:
                                $conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($createdFilePath."/".$createdFileName);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                $conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
                                #參考資料來源:
                                #http://php.net/manual/en/function.file-exists.php
                                #http://php.net/manual/en/control-structures.foreach.php
                                $conf["fileAccess"]["checkMutiFileExist"]["web"]=$conf["web"];
                                $checkResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);
                                unset($conf["fileAccess"]["checkMutiFileExist"]);

                                #debug
                                #var_dump($checkResult);
                                #exit;

                                #如果檢查檔案是否存在失敗
                                if($checkResult["status"]=="false"){

                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$checkResult;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果 $createFilePath.$createdFileName 檔案存在
                                if($checkResult["varExist"][0]=="true"){

                                        #跳過這次迴圈
                                        continue;

                                        }#if end

                                #反之代表 $createFilePath.$createdFileName 檔案不存在
                                else{

                                        #嘗試建立該檔案
                                        #函式說明:
                                        #將字串寫入到檔案
                                        #回傳結果:
                                        #$result["status"],true表示檔案寫入成功,false表示檔案寫入失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #必填參數:
                                        $conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$createdFilePath."/".$createdFileName;#爲要編輯的檔案名稱
                                        $conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                        $conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        $conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="w";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                        $conf["fileAccess"]["writeTextIntoFile"]["web"]=$conf["web"];
                                        $fileCreateResult=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
                                        unset($conf["fileAccess"]["writeTextIntoFile"]);

                                        #如果 $fileCreateResult["status"] 等於 "true"
                                        if($fileCreateResult["status"]=="true"){

                                                #代表檔案建立成功

                                                #更新建立的檔案名稱
                                                $result["createdFileName"]=$createdFileName;

                                                #設置新建立的檔案名稱與路徑
                                                $result["createdFilePathAndName"]=$createdFilePath."/".$result["createdFileName"];

                                                #設置新建立的檔與路徑
                                                $result["createdFilePath"]=$createdFilePath;

                                                #跳出迴圈
                                                break;

                                                }#if end

                                        #反之代表檔案建立失敗
                                        else{

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$fileCreateResult;

                                                #回傳結果
                                                return $result;

                                                }#else end

                                        }#else end

                                }#if end

                        #反之代表有相同檔名存在
                        else{

                                #用「.」分割檔案名稱
                                #函式說明:
                                #將固定格式的字串分開,並回傳分開的結果。
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$result["error"],錯誤訊息陣列
                                #$result["function"],當前執行的函數名稱.
                                #$result["oriStr"],要分割的原始字串內容
                                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                #$result["dataCounts"],爲總共分成幾段
                                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                                #必填參數:
                                $conf["stringProcess::spiltString"]["stringIn"]=$createdFileName;#要處理的字串。
                                $conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
                                #可省略參數:
                                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                unset($conf["stringProcess::spiltString"]);

                                #如果分割檔案名稱失敗
                                if($spiltString["status"]=="false"){

                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$spiltString;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #初始化儲存建立的檔案名稱
                                $createdFileName="";

                                #初始化儲存編號的變數
                                $no="";

                                #如果沒有dot存在
                                if($spiltString["found"]=="false"){

                                        #解析 $conf["repeatNameRule"],用 \$i 分割.
                                        #函式說明:
                                        #將固定格式的字串分開,並回傳分開的結果。
                                        #回傳結果:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["oriStr"],要分割的原始字串內容
                                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                        #$result["dataCounts"],爲總共分成幾段
                                        #必填參數:
                                        $conf["stringProcess::spiltString"]["stringIn"]=$conf["repeatNameRule"];#要處理的字串。
                                        $conf["stringProcess::spiltString"]["spiltSymbol"]="\$i";#爲以哪個符號作爲分割
                                        #可省略參數:
                                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                                        $noString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                        unset($conf["stringProcess::spiltString"]);

                                        #如果分割檔案名稱失敗
                                        if($noString["status"]=="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$noString;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果 編號規則字串 分割出來的段數為2
                                        if($noString["dataCounts"]==2){

                                                #組合編號
                                                $no=$noString["dataArray"][0].$i.$noString["dataArray"][1];

                                                }#if end

                                        #反之 號規則字串 分割出來的段數為1
                                        else if($noString["dataCounts"]==1){

                                                #判斷 "\$i" 在開頭或結尾
                                                #函式說明:
                                                #取得關鍵字在字串的哪個位置
                                                #回傳結果:
                                                #$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
                                                #$result["error"],錯誤訊息陣列.
                                                #$result["function"],當前執行的函數名稱.
                                                #$result["argu"],傳入的參數.
                                                #$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
                                                #$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
                                                #$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
                                                #必填參數:
                                                #$conf["inputStr"],字串,被搜尋的字串.
                                                $conf["search::findKeyWordPosition"]["inputStr"]=$conf["repeatNameRule"];
                                                #$conf["keyWord"],字串,關鍵字.
                                                $conf["search::findKeyWordPosition"]["keyWord"]="\$i";
                                                #參考資料:
                                                #http://php.net/manual/en/function.strpos.php
                                                $findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
                                                unset($conf["search::findKeyWordPosition"]);

                                                #如果取得關鍵字位置失敗
                                                if($findKeyWordPosition["status"]=="false"){

                                                        #設置執行失敗
                                                        $result["status"]="false";

                                                        #設置錯誤訊息
                                                        $result["error"]=$findKeyWordPosition;

                                                        #回傳結果
                                                        return $result;

                                                        }#if end

                                                #如果關鍵字在開頭
                                                if($findKeyWordPosition["head"]=="true"){

                                                        #組合編號
                                                        $no=$i.$noString["dataArray"][0];

                                                        }#if end

                                                #反之如果關鍵字在結尾
                                                else if($findKeyWordPosition["tail"]=="true"){

                                                        #組合編號
                                                        $no=$noString["dataArray"][0].$i;

                                                        }#if end

                                                #其他情況
                                                else{

                                                        #設置執行失敗
                                                        $result["status"]="false";

                                                        #設置錯誤訊息
                                                        $result["error"]=$findKeyWordPosition;

                                                        #設置額外的錯誤訊息
                                                        $result["error"][]="非預期的結果";

                                                        #回傳結果
                                                        return $result;

                                                        }#else end

                                                }#if end

                                        #反之 編號規則字串 分割出來的段數為0
                                        else if($noString["dataCounts"]==0){

                                                #組合編號
                                                $no=$j;

                                                }#if end

                                        #其他結果
                                        else{

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$noString;

                                                #設置額外的錯誤訊息
                                                $result["error"][]="非預期的結果";

                                                #回傳結果
                                                return $result;

                                                }#else end

                                        #串接編號到檔案名稱上
                                        $createdFileName=$validatePath["fileName"].$no;

                                        }#if end

                                #反之有dot存在
                                else{

                                        #依據 $spiltString["dataCounts"] 值來組裝新的檔案名稱
                                        for($j=0;$j<$spiltString["dataCounts"];$j++){

                                                #如果是副檔名的前一段內容
                                                if(($conf["filenameExtensionStartPoint"]+1)==($spiltString["dataCounts"]-$j)){

                                                        #解析 $conf["repeatNameRule"],用 \$i 分割.
                                                        #函式說明:
                                                        #將固定格式的字串分開,並回傳分開的結果。
                                                        #回傳結果:
                                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                                        #$result["error"],錯誤訊息陣列
                                                        #$result["function"],當前執行的函數名稱.
                                                        #$result["oriStr"],要分割的原始字串內容
                                                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                                        #$result["dataCounts"],爲總共分成幾段
                                                        #必填參數:
                                                        $conf["stringProcess::spiltString"]["stringIn"]=$conf["repeatNameRule"];#要處理的字串。
                                                        $conf["stringProcess::spiltString"]["spiltSymbol"]="\$i";#爲以哪個符號作爲分割
                                                        #可省略參數:
                                                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                                                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                                                        $noString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                                        unset($conf["stringProcess::spiltString"]);

                                                        #如果分割檔案名稱失敗
                                                        if($noString["status"]=="false"){

                                                                #設置執行失敗
                                                                $result["status"]="false";

                                                                #設置錯誤訊息
                                                                $result["error"]=$noString;

                                                                #回傳結果
                                                                return $result;

                                                                }#if end

                                                        #如果 編號規則字串 分割出來的段數為2
                                                        if($noString["dataCounts"]==2){

                                                                #組合編號
                                                                $no=$noString["dataArray"][0].$i.$noString["dataArray"][1];

                                                                }#if end

                                                        #反之 號規則字串 分割出來的段數為1
                                                        else if($noString["dataCounts"]==1){

                                                                #判斷 "\$i" 在開頭或結尾
                                                                #函式說明:
                                                                #取得關鍵字在字串的哪個位置
                                                                #回傳結果:
                                                                #$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
                                                                #$result["error"],錯誤訊息陣列.
                                                                #$result["function"],當前執行的函數名稱.
                                                                #$result["argu"],傳入的參數.
                                                                #$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
                                                                #$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
                                                                #$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
                                                                #必填參數:
                                                                #$conf["inputStr"],字串,被搜尋的字串.
                                                                $conf["search::findKeyWordPosition"]["inputStr"]=$conf["repeatNameRule"];
                                                                #$conf["keyWord"],字串,關鍵字.
                                                                $conf["search::findKeyWordPosition"]["keyWord"]="\$i";
                                                                #參考資料:
                                                                #http://php.net/manual/en/function.strpos.php
                                                                $findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
                                                                unset($conf["search::findKeyWordPosition"]);

                                                                #如果取得關鍵字位置失敗
                                                                if($findKeyWordPosition["status"]=="false"){

                                                                        #設置執行失敗
                                                                        $result["status"]="false";

                                                                        #設置錯誤訊息
                                                                        $result["error"]=$findKeyWordPosition;

                                                                        #回傳結果
                                                                        return $result;

                                                                        }#if end

                                                                #如果關鍵字在開頭
                                                                if($findKeyWordPosition["head"]=="true"){

                                                                        #組合編號
                                                                        $no=$i.$noString["dataArray"][0];

                                                                        }#if end

                                                                #反之如果關鍵字在結尾
                                                                else if($findKeyWordPosition["tail"]=="true"){

                                                                        #組合編號
                                                                        $no=$noString["dataArray"][0].$i;

                                                                        }#if end

                                                                #其他情況
                                                                else{

                                                                        #設置執行失敗
                                                                        $result["status"]="false";

                                                                        #設置錯誤訊息
                                                                        $result["error"]=$findKeyWordPosition;

                                                                        #設置額外的錯誤訊息
                                                                        $result["error"][]="非預期的結果";

                                                                        #回傳結果
                                                                        return $result;

                                                                        }#else end

                                                                }#if end

                                                        #反之 編號規則字串 分割出來的段數為0
                                                        else if($noString["dataCounts"]==0){

                                                                #組合編號
                                                                $no=$j;

                                                                }#if end

                                                        #其他結果
                                                        else{

                                                                #設置執行失敗
                                                                $result["status"]="false";

                                                                #設置錯誤訊息
                                                                $result["error"]=$noString;

                                                                #設置額外的錯誤訊息
                                                                $result["error"][]="非預期的結果";

                                                                #回傳結果
                                                                return $result;

                                                                }#else end

                                                        #串接編號到檔案名稱上
                                                        $createdFileName=$createdFileName.$spiltString["dataArray"][$j].$no;

                                                        #如果不是最後一段
                                                        if($j!=$spiltString["dataCounts"]-1){

                                                                #串接並加上 dot
                                                                $createdFileName=$createdFileName.".";

                                                                }#if end

                                                        }#if end

                                                #反之如果不是最後一段
                                                else if($j!=$spiltString["dataCounts"]-1){

                                                        #串接並加上 dot
                                                        $createdFileName=$createdFileName.$spiltString["dataArray"][$j].".";

                                                        }#if end

                                                #反之是最後一段
                                                else{

                                                        #串接並加上 dot
                                                        $createdFileName=$createdFileName.$spiltString["dataArray"][$j];

                                                        }#else end

                                                }#for end

                                        }#else end

                                #檢查加上編號的檔案是否存在
                                #函式說明:
                                #檢查多個檔案與資料夾是否存在.
                                #回傳的結果:
                                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                                #必填參數:
                                $conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($createdFilePath."/".$createdFileName);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                                $conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
                                #參考資料來源:
                                #http://php.net/manual/en/function.file-exists.php
                                #http://php.net/manual/en/control-structures.foreach.php
                                $conf["fileAccess"]["checkMutiFileExist"]["web"]=$conf["web"];
                                $checkResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);
                                unset($conf["fileAccess"]["checkMutiFileExist"]);

                                #如果檢查檔案是否存在失敗
                                if($checkResult["status"]=="false"){

                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$checkResult;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果 $checkResult["varExist"][0] 等於 "true"
                                if($checkResult["varExist"][0]=="true"){

                                        #取得要建立的檔案名稱
                                        $createdFileName=$validatePath["fileName"];

                                        #跳到下個迴圈
                                        continue;

                                        }#if end

                                #反之代表 $createFilePath.$createdFileName."(".$i.")" 檔檔案不存在
                                else{

                                        #嘗試建立該檔案
                                        #函式說明:
                                        #將字串寫入到檔案
                                        #回傳結果:
                                        #$result["status"],true表示檔案寫入成功,false表示檔案寫入失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #必填參數:
                                        $conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$createdFilePath."/".$createdFileName;#爲要編輯的檔案名稱
                                        $conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                        $conf["fileAccess"]["writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        $conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="w";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                        $conf["fileAccess"]["writeTextIntoFile"]["web"]=$conf["web"];
                                        $fileCreateResult=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
                                        unset($conf["fileAccess"]["writeTextIntoFile"]);

                                        #如果 $fileCreateResult["status"] 等於 "true"
                                        if($fileCreateResult["status"]=="true"){

                                                #代表檔案建立成功

                                                #更新建立的檔案名稱
                                                $result["createdFileName"]=$createdFileName;

                                                #跳出迴圈
                                                break;

                                                }#if end

                                        #反之代表檔案建立失敗
                                        else{

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$fileCreateResult;

                                                #回傳結果
                                                return $result;

                                                }#else end

                                        }#else end

                                }#else end

                        }#for end

                #如果不存在建立的檔案名稱
                if(!isset($result["createdFileName"])){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"][]="建立的檔案名稱不存在";

                        #回傳結果
                        return $result;

                        }#if end

                #執行到這邊代表執行成功
                $result["status"]="true";

                #設置新建立的檔案名稱與路徑
                $result["createdFilePathAndName"]=$createdFilePath."/".$result["createdFileName"];

                #設置新建立的檔與路徑
                $result["createdFilePath"]=$createdFilePath;

                #回傳結果
                return $result;

                }#fucntion createFileAfterCheck end

        /*
        #函式說明:
        #將檔案內容清空
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列
        #必填參數:
        #$conf["fileAddr"],字串,要清空的檔案位置與名稱.
        $conf["fileAddr"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["web"],"true"代表為網頁系統,"false"代表檔案系統,預設為"false".
        #$conf["web"]="false";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function emptyFile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當前執行的涵式
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","fileAddr");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["argu"],使用的參數.
                #$result["content"],網址,若是在命令列執行,則為"null".
                #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                $conf["fileAccess::getInternetAddressV2"]["address"]=$conf["fileAddr"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::getInternetAddressV2"]["web"]=$conf["web"];
                #備註:
                #建構中,fileSystemRelativePosition尚未實作,檢查參數尚未實作.
                $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                unset($conf["fileAccess::getInternetAddressV2"]);

                #如果確保路徑失敗
                if($getInternetAddressV2["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getInternetAddressV2;

                        #回傳結果
                        return $result;

                        }#if end

                #更新檔案路徑
                $conf["fileAddr"]=$getInternetAddressV2["fileSystemAbsoulutePosition"];

                #確保要建立檔案的路徑
                #函式說明:
                #確保路徑存在.
                #回傳結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["path"],建立好的路徑字串.
                #$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
                #必填參數:
                #$conf["path"],要檢查的路徑
                $conf["fileAccess::validatePath"]["path"]=$conf["fileAddr"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::validatePath"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
                $conf["fileAccess::validatePath"]["haveFileName"]="true";
                #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
                #$conf["dirPermission"]="";
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::validatePath"]["web"]="false";
                $validatePath=fileAccess::validatePath($conf["fileAccess::validatePath"]);
                unset($conf["fileAccess::validatePath"]);

                #如果確保路徑失敗
                if($validatePath["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$validatePath;

                        #回傳結果
                        return $result;

                        }#if end

                #清空檔案
                #函式說明:
                #將字串寫入到檔案
                #回傳結果:
                #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["fileInfo"],實際上寫入的檔案資訊陣列.
                #$result["fileInfo"]["createdFileName"],建立好的檔案名稱.
                #$result["fileInfo"]["createdFilePath"],檔案建立的路徑.
                #$result["fileInfo"]["createdFilePathAndName"].建立好的檔案名稱與路徑.
                #$result["argu"],使用的參數.
                #必填參數:
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::writeTextIntoFile"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["fileName"],字串,爲要編輯的檔案名稱,預設為隨機產生的檔案名稱.
                #$conf["fileAccess::writeTextIntoFile"]["fileName"]=$validatePath["path"]."/".$validatePath["fileName"];
                $conf["fileAccess::writeTextIntoFile"]["fileName"]=$validatePath["path"]."/".$validatePath["fileName"];;
                #$conf["inputString"],字串,爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可,預設為"".
                #$conf["inputString"]="";
                #$conf["writeMethod"],字串,爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入.
                #$conf["writeMethod"]="a";
                #$conf["checkRepeat"],字串,"true"代表建立檔案之前要先檢查檔案是否存在,若存在則在原名稱後面加上從(1)開始的編號.
                #$conf["checkRepeat"]="";
                #$conf["filenameExtensionStartPoint"],字串,檔案的副檔名是從倒數第幾個小數點(dot)開始,預設為"1",最後一個小數點,必須與$conf["checkRepeat"]搭配才會生效.
                #$conf["filenameExtensionStartPoint"]="";
                #$conf["repeatNameRule"],字串,遇到相同名稱的檔案要如何加上識別的編號,編號用「\$i」表示,預設為"(\$i)",必須與$conf["checkRepeat"]搭配才會生效.
                #$conf["repeatNameRule"]="";
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::writeTextIntoFile"]["web"]="false";
                $writeTextIntoFile=fileAccess::writeTextIntoFile($conf["fileAccess::writeTextIntoFile"]);
                unset($conf["fileAccess::writeTextIntoFile"]);

                #如果確保路徑失敗
                if($writeTextIntoFile["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$writeTextIntoFile;

                        #回傳結果
                        return $result;

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #儲存建立的結果
                $result["content"]=$writeTextIntoFile;

                #回傳結果
                return $result;

                }#function emptyFile end

        /*
        #函式說明:
        #建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限,要設定權限,必須為資料夾的擁有者.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列
        #$result["warning"],警告訊息陣列
        #必填參數:
        #$conf["dirPositionAndName"]="";#新建的位置與名稱
        $conf["dirPositionAndName"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
        #$conf["dirPermission"]="";
        #參考資料:
        #mkdir=>http://php.net/manual/en/function.mkdir.php
        #chmod=>http://php.net/manual/en/function.chmod.php
        #參考資料:
        #無.
        #備註:
        #同 function createFolderAfterCheck.
        */
        public static function createNewFolder(&$conf){

                /*
                #函式說明:
                #檢查要建立的檔案路徑是否存在,若不存在則建立新檔案,若檔案已存在則會在原檔名後面加上從(1)開始的編號,再度嘗試建立檔案,以避免資料異常.
                #回傳的結果:
                #$result["status"],執行狀態,"true"代表執行正常,"false"代表執行失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["createdFileName"],建立好的檔案名稱.
                #$result["createdFilePath"],檔案建立的路徑.
                #$result["createdFilePathAndName"].建立好的檔案名稱與路徑.
                #必填參數:
                #$conf["checkedFileAndPath"],字串陣列,要建立的檔案路徑
                $conf["checkedFileAndPath"]="";
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileArgu"]=__FILE__;
                */
                return fileAccess::createFolderAfterCheck($conf);
                unset($conf);

                }#function createNewFolder end

        /*
        #函式說明:
        #建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限,要設定權限,必須為資料夾的擁有者.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列
        #$result["warning"],警告訊息陣列
        #$result["argu"],使用的參數.
        #$result["content"],建立的目錄路徑.
        #必填參數:
        #$conf["dirPositionAndName"]="";#新建的位置與名稱
        $conf["dirPositionAndName"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
        #$conf["dirPermission"]="";
        #$conf["web"],"false"代表在檔案系統環境,"true"代表在網頁稀系統環境.
        #$conf["web"]="false";
        #參考資料:
        #mkdir=>http://php.net/manual/en/function.mkdir.php
        #chmod=>http://php.net/manual/en/function.chmod.php
        #備註:
        #無.
        */
        public static function createFolderAfterCheck(&$conf){

                #初始化要回傳的結果
                $result=array();

                #初始化警告訊息陣列
                $result["warning"]=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","dirPositionAndName");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dirPermission","web");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("0770","false");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]==="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]==="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["argu"],使用的參數.
                #$result["content"],網址,若是在命令列執行,則為"null".
                #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                $conf["fileAccess::getInternetAddressV2"]["address"]=$conf["dirPositionAndName"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::getInternetAddressV2"]["web"]=$conf["web"];
                #備註:
                #建構中,fileSystemRelativePosition尚未實作,檢查參數尚未實作.
                $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                unset($conf["fileAccess::getInternetAddressV2"]);

                #如果 $getInternetAddressV2["status"] 等於 "false"
                if($getInternetAddressV2["status"]==="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$getInternetAddressV2;

                        #回傳結果
                        return $result;

                        }#if end

                #取得絕對位置
                $conf["dirPositionAndName"]=$getInternetAddressV2["fileSystemAbsoulutePosition"];

                #用「/」分割要建立的路徑
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["dirPositionAndName"];
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割失敗
                if($spiltString["status"]=="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                $checkedPath="";

                #依據切割成的路徑片段數目
                for($i=0;$i<$spiltString["dataCounts"];$i++){

                        $checkedPath=$checkedPath."/".$spiltString["dataArray"][$i];

                        #檢查路徑是否存在
                        #函式說明:
                        #檢查多個檔案與資料夾是否存在.
                        #回傳的結果:
                        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$resutl["function"],當前執行的涵式名稱.
                        #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                        #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                        #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                        #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                        #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                        #必填參數:
                        #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                        $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($checkedPath);
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數
                        #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                        #$conf["disableWebSearch"]="false";
                        #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                        #$conf["userDir"]="true";
                        #參考資料來源:
                        #http://php.net/manual/en/function.file-exists.php
                        #http://php.net/manual/en/control-structures.foreach.php
                        #備註:
                        #函數file_exists檢查的路徑為檔案系統的路徑
                        $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);

                        #如果檢查資料夾路徑失敗
                        if($checkMultiFileExist["status"]=="false"){

                                #設置 $result["status"] 為 "false"
                                $result["status"]="false";

                                #設置 $result["error"]
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果目錄不存在
                        if($checkMultiFileExist["allExist"]=="false"){

                                #如果有這個名稱的東西存在
                                if(file_exists($checkedPath)){

                                        #如果目錄存在
                                        if(is_dir($checkedPath)){

                                                #目錄已經存在換下一層
                                                continue;

                                                }#if end

                                        }#if end

                                #建立目錄
                                $mkdir=@mkdir($checkedPath,0770);

                                #如果建立目錄失敗
                                #參考資料:
                                #http://php.net/manual/en/function.mkdir.php
                                if($mkdir===false){

                                        #設置 $result["status"] 為 "false"
                                        $result["status"]="false";

                                        #設置 $result["error"]
                                        $result["error"][]="建立目錄「".$checkedPath."」失敗";

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #更改目錄的權限為 0770
                                chmod($checkedPath,0770);

                                }#if end

                        }#for end

                #取得建立好的目錄
                $result["content"]=$checkedPath;

                #執行到這邊代表執行成功
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function createFolderAfterCheck end

        /*
        #函式說明:
        #移除檔案
        #回傳結果:
        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["warning"],警告訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],當前函式使用的參數.
        #必填參數:
        #$conf["fileAddress"],字串,要移除檔案的位置.
        $conf["fileAddress"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        #$conf["commentsArray"]=array("");
        #$conf["allowDelSymlink"],字串,預設為"false",不移除軟連結;"true"代表要移除軟連結.
        #$conf["allowDelSymlink"]="true";
        #$conf["allowDelFolder"],字串,預設為"false",不移除目錄;"true"代表要移除目錄.
        #$conf["allowDelFolder"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function delFile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","fileAddress");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("commentsArray","allowDelSymlink","allowDelFolder");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"false","false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["commentsArray"] 有設定
                if(isset($conf["commentsArray"])){

                        #印出提示文字
                        #函式說明:
                        #印出多行文字,結尾自動換行.
                        #回傳的結果:
                        #$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #必填參數:
                        #$conf["outputStringArray"],字串陣列,每行要印出的文字內容.
                        $conf["cmd::echoMultiLine"]["outputStringArray"]=$conf["commentsArray"];
                        $echoMultiLine=cmd::echoMultiLine($conf["cmd::echoMultiLine"]);
                        unset($conf["cmd::echoMultiLine"]);

                        #如果印出提示文字失敗
                        if($echoMultiLine["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$echoMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #檢查要移除的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                $conf["fileAccess.checkMultiFileExist"]["fileArray"]=array($conf["fileAddress"]);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                #$conf["fileAccess.checkMultiFileExist"]["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess.checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
                $conf["fileAccess.checkMultiFileExist"]["web"]="false";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                $checkResult=fileAccess::checkMultiFileExist($conf["fileAccess.checkMultiFileExist"]);
                unset($conf["fileAccess.checkMultiFileExist"]);

                #var_dump($checkResult);

                #如果檢查檔案是否存在失敗
                if($checkResult["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #回傳錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果目標檔案不存在
                if($checkResult["varExist"][0]==="false"){

                        #設置錯誤識別
                        $result["status"]="true";

                        #回傳錯誤訊息
                        $result["warning"][]="要移除的檔案不存在";

                        #回傳結果
                        return $result;

                        }#if end

                #如果要移除的目標是檔案
                if(is_file($conf["fileAddress"])){

                        #移除檔案,並回傳移除的結果
                        $eraseResult=(@unlink($conf["fileAddress"]));

                        #如果 $eraseResult 等於 false
                        if($eraseResult===false){

                                #設置錯誤識別
                                $result["status"]="false";

                                #回傳錯誤訊息
                                $result["error"][]="檔案移除失敗";

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #反之要移除的目標是目錄
                else if(is_dir($conf["fileAddress"])){

                        #如果允許移除目錄
                        if($conf["allowDelFolder"]==="true"){

                                #移除目錄跟底下的內容
                                w函式說明:
                                #呼叫shell執行系統命令,並取得回傳的內容.
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],當前執行的函數名稱.
                                #$result["argu"],使用的參數.
                                #$result["cmd"],執行的指令內容.
                                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                                #$result["running"],是否還在執行.
                                #$result["pid"],pid.
                                #$result["statusCode"],執行結束後的代碼.
                                #必填參數:
                                #$conf["command"],字串,要執行的指令.
                                $conf["external::callShell"]["command"]="rm";
                                #$conf["fileArgu"],字串,變數__FILE__的內容.
                                $conf["external::callShell"]["fileArgu"]=__FILE__;
                                #可省略參數:
                                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                                $conf["external::callShell"]["argu"]=array("-rf",$conf["fileAddress"]);
                                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                                #$conf["arguIsAddr"]=array();
                                #$conf["plainArgu"],字串陣列,哪幾個參數不要加上"",若為"true"則代表不用包;反之"false"則代表要包.
                                #$conf["plainArgu"]=array();
                                #$conf["useApostrophe"],字串陣列,如果有需要包住,則用「'」,而非「"」處理.前者為"true";後者為"false".
                                #$conf["useApostrophe"]=array();
                                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                                #$conf["enablePrintDescription"]="true";
                                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                                #$conf["printDescription"]="";
                                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                                $conf["external::callShell"]["escapeshellarg"]="true";
                                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                                #$conf["thereIsShellVar"]=array();
                                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                                #$conf["username"]="";
                                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                                #$conf["password"]="";
                                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                                #$conf["useScript"]="";
                                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                                #$conf["inBackGround"]="";
                                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                                #$conf["getErr"]="false";
                                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                                #$conf["doNotRun"]="false";
                                #參考資料:
                                #exec=>http://php.net/manual/en/function.exec.php
                                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                                #備註:
                                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                                #若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
                                $callShell=external::callShell($conf["external::callShell"]);
                                unset($conf["external::callShell"]);

                                #如果執行失敗
                                if($callShell["status"]==="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #回傳錯誤訊息
                                        $result["error"]=$callShell;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                }#if end

                        #反之不允許
                        else{

                                #設置錯誤識別
                                $result["status"]="false";

                                #回傳錯誤訊息
                                $result["error"][]="不允許移除目錄";

                                #回傳結果
                                return $result;

                                }#else end

                        }#if end

                #反之
                else{

                        #可能為 軟連結

                        #如果允許移除
                        if($conf["allowDelSymlink"]==="true"){

                                #移除檔案,並回傳移除的結果
                                $eraseResult=(@unlink($conf["fileAddress"]));

                                #如果 $eraseResult 等於 false
                                if($eraseResult===false){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #回傳錯誤訊息
                                        $result["error"][]="檔案移除失敗";

                                        #回傳結果
                                        return $result;

                                        }#if end

                                }#if end

                        #反之
                        else{

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"][]="不允許移除 檔案、目錄 以外類型的目標";

                                #回傳結果
                                return $result;

                                }#else end

                        }#else end

                #執行到這邊代表執行正常.
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function delFile end

        /*
        #函式說明:
        #移除多個檔案
        #回傳結果:
        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
        #$result["error"],錯誤訊息陣列
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],使用的參數.
        #$result["content"],陣列,移除各個檔案的結果.
        #必填參數:
        #$conf["fileAddress"],字串陣列,要移除檔案的位置.
        $conf["fileAddress"]=array("");
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function delMultiFile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數.
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","fileAddress");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("commentsArray");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #針對每個要移除的檔案
                foreach($conf["fileAddress"] as $fileAddr){

                        #函式說明:
                        #移除檔案
                        #回傳結果:
                        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
                        #$result["error"],錯誤訊息陣列
                        #$result["warning"],警告訊息陣列
                        #$result["function"],當前執行的函數名稱
                        #必填參數:
                        #$conf["fileAddress"],字串,要移除檔案的位置.
                        $conf["fileAccess::delFile"]["fileAddress"]=$fileAddr;
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                        $conf["fileAccess::delFile"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
                        #$conf["commentsArray"]=array("");
                        #備註:
                        #無.
                        $delFile=fileAccess::delFile($conf["fileAccess::delFile"]);
                        unset($conf["fileAccess::delFile"]);

                        #如果檢查失敗
                        if($delFile["status"]==="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$delFile;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得移除檔案的結果
                        $result["content"][]=$delFile;

                        }#foreach end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function delMultiFile end

        /*
        #函式說明:
        #確保路徑存在.
        #回傳結果:
        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息陣列.
        #$resutl["function"],當前執行的涵式名稱.
        #$result["path"],建立好的路徑字串.
        #$result["fileName"],檔案名稱,若 $conf["haveFileName"] 為 "true" 則會回傳.
        #$result["argu"],使用的參數.
        #必填參數:
        #$conf["path"],要檢查的路徑
        $conf["path"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
        #$conf["haveFileName"]="false";
        #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人無法使用.
        #$conf["dirPermission"]="";
        #$conf["web"],是否為檔案系統,"true"為網頁路徑,"false"為網頁系統,預設為"false".
        #$conf["web"]="";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function validatePath(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArgument"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArgument"]["mustBeFilledVariableName"]=array("path","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArgument"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArgument"]["referenceVarKey"]="variableCheck::checkArgument";
                #可以省略的參數:
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArgument"]["canBeEmptyString"]="false";
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
                $conf["variableCheck::checkArgument"]["skipableVariableCanNotBeEmpty"]=array("haveFileName","dirPermission","web");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArgument"]["skipableVariableName"]=array("haveFileName","dirPermission","web");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArgument"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArgument"]["skipableVarDefaultValue"]=array("false","0770","false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArgument=variableCheck::checkArguments($conf["variableCheck::checkArgument"]);
                unset($conf["variableCheck::checkArgument"]);

                #如果檢查過程出錯
                if($checkArgument["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArgument;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArgument["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArgument;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["argu"],使用的參數.
                #$result["content"],網址,若是在命令列執行,則為"null".
                #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                $conf["fileAccess::getInternetAddressV2"]["address"]=$conf["path"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::getInternetAddressV2"]["web"]=$conf["web"];
                #備註:
                #建構中,fileSystemRelativePosition尚未實作,檢查參數尚未實作.
                $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                unset($conf["fileAccess::getInternetAddressV2"]);

                #如果檢查過程出錯
                if($getInternetAddressV2["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$getInternetAddressV2;

                        #回傳結果
                        return $result;

                        }#if end

                #取得轉換好的絕對路徑
                $result["path"]=$getInternetAddressV2["fileSystemAbsoulutePosition"];

                #debug
                #var_dump($getInternetAddressV2);exit;

                #如果 路徑 含有檔案名稱
                if($conf["haveFileName"]==="true"){

                        #預設要加回去的結束字串為空字串
                        $endStr="";

                        #如果開頭跟結尾都是 "'"
                        if( strpos($result["path"],"'")===0 && strpos($result["path"],"'")===(strlen($result["path"])-1) ){

                                #設置要加回去的結束字串
                                $endStr="'";

                                }#if end

                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                        #必填參數:
                        #$conf["stringIn"],字串,要處理的字串.
                        $conf["stringProcess::spiltString"]["stringIn"]=$result["path"];
                        #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                        $conf["stringProcess::spiltString"]["spiltSymbol"]="/";
                        #可省略參數:
                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果檢查過程出錯
                        if($spiltString["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #初始化儲存 path
                        $path="";

                        #針對n-1段的內容
                        for($i=0;$i<$spiltString["dataCounts"]-1;$i++){

                                #串接路徑
                                $path=$path."/".$spiltString["dataArray"][$i];

                                }#for end

                        #如果路徑為空
                        if($path===""){

                                #則與設為根目錄
                                $path="/";

                                }#if end

                        #設置檔案名稱
                        $result["fileName"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];

                        #取得不含檔案名稱的路徑
                        $conf["path"]=$path.$endStr;

                        #取得不含檔案名稱的路徑
                        $result["path"]=$path.$endStr;

                        }#if end

                #函式說明:
                #建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限,要設定權限,必須為資料夾的擁有者.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列
                #必填參數:
                $conf["fileAccess::createFolderAfterCheck"]["dirPositionAndName"]=$conf["path"];#新建的位置與名稱
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::createFolderAfterCheck"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
                $conf["fileAccess::createFolderAfterCheck"]["dirPermission"]=$conf["dirPermission"];
                $conf["fileAccess::createFolderAfterCheck"]["web"]="false";
                #參考資料:
                #mkdir=>http://php.net/manual/en/function.mkdir.php
                #chmod=>http://php.net/manual/en/function.chmod.php
                $createFolderAfterCheck=fileAccess::createFolderAfterCheck($conf["fileAccess::createFolderAfterCheck"]);
                unset($conf["fileAccess::createFolderAfterCheck"]);

                #如果建立路徑過程出錯
                if($createFolderAfterCheck["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$createFolderAfterCheck;

                        #回傳結果
                        return $result;

                        }#if end

                #如果有警告訊息
                if(count($createFolderAfterCheck["warning"])>0){

                        #取得警告訊息
                        $result["error"]=$createFolderAfterCheck["warning"];

                        #設置執行失敗
                        $result["status"]="false";

                        #回傳結果
                        return $result;

                        }#if end

                #執行到這邊代表成功
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function validatePath end

        /*
        #函式說明:
        #解析路徑的每個層級.
        #回傳結果:
        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息陣列.
        #$resutl["function"],當前執行的涵式名稱.
        #$result["argu"],使用的參數.
        #$result["content"],解析出來的路徑階層.
        #必填參數:
        #$conf["path"],要檢查的路徑
        $conf["path"]="";
        #可省略參數:
        #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
        #$conf["haveFileName"]="false";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function parsePath(&$conf){

                #初始化要回傳的內容
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #記錄使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("haveFileName");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查有誤
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["path"];
                #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                #$conf["allowEmptyStr"]="false";
                #參考資料:
                #無.
                #備註:
                #無.
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果檢查有誤
                if($spiltString["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #確認是否為絕對路徑
                #函式說明:
                #取得符合特定字首與字尾的字串
                #回傳結果:
                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                #$result["function"],當前執行的函數名稱.
                #$result["error"],錯誤訊息陣列.
                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                #$result["content"],符合條件的字串,去掉字首字尾後的結果.
                #$result["returnString"],爲符合字首字、尾條件的字串內容。
                #$result["argu"],使用的參數.
                #必填參數:
                #$conf["checkString"],字串,要檢查的字串.
                $conf["search::getMeetConditionsString"]["checkString"]=$conf["path"];
                #可省略參數:
                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                $conf["search::getMeetConditionsString"]["frontWord"]="/";
                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                #$conf["search::getMeetConditionsString"]["tailWord"]="";
                #參考資料:
                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                #備註:
                #無.
                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                unset($conf["search::getMeetConditionsString"]);

                #如果檢查有誤
                if($getMeetConditionsString["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMeetConditionsString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果是絕對路徑
                if($getMeetConditionsString["founded"]==="true"){

                        #初始化路徑為 "/"
                        $result["content"][]="/";

                        }#if end

                #針對每個切割出來的路徑階層
                foreach($spiltString["dataArray"] as $index => $dir){

                        #如果路徑結尾含有檔案名稱
                        if($conf["haveFileName"]==="true"){

                                #如果是最後一段
                                if($index===$spiltString["dataCounts"]-1){

                                        #忽略
                                        continue;

                                        }#if end

                                }#if end

                        #後面加上 資料夾名稱 跟 "/"
                        $newPath=$dir."/";

                        #如果有 content
                        if(isset($result["content"])){

                                #如果有上個資料夾
                                if(isset($result["content"][count($result["content"])-1])){

                                        #後面加上 上個資料夾名稱 加上資料夾名稱 跟 "/"
                                        $newPath=$result["content"][count($result["content"])-1].$dir."/";

                                        }#if end

                                }#if end

                        #並新增置結果
                        $result["content"][]=$newPath;

                        }#foreach end

                #var_dump($result["content"]);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function parsePath end

        /*
        #函式說明:
        #檢查路徑是否存在.
        #回傳結果:
        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息陣列.
        #$resutl["function"],當前執行的涵式名稱.
        #$result["argu"],使用的參數.
        #$result["found"],路徑是否存在,"true"代表存在,"false"代表不存在.
        #$result["content"],每個階層路徑的檢查結果,每個元素有檢查的路徑"path"跟是否有存在或可存取的識別"found".
        #必填參數:
        #$conf["path"],要檢查的路徑
        $conf["path"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
        #$conf["haveFileName"]="false";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function checkPathExist(&$conf){

                #初始化要回傳的內容
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #記錄使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("haveFileName");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查有誤
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #解析路徑的每個層級.
                #回傳結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["content"],解析出來的路徑階層.
                #必填參數:
                #$conf["path"],要檢查的路徑
                $conf["fileAccess::parsePath"]["path"]=$conf["path"];
                #可省略參數:
                #$conf["haveFileName"],字串,"true"代表有$conf["path"]檔案名稱,"false"代表$conf["path"]為純路徑,預設為"false".
                $conf["fileAccess::parsePath"]["haveFileName"]=$conf["haveFileName"];
                #參考資料:
                #無.
                #備註:
                #無.
                $parsePath=fileAccess::parsePath($conf["fileAccess::parsePath"]);
                unset($conf["fileAccess::parsePath"]);

                #如果檢查有誤
                if($parsePath["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$parsePath;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址,若"web"參數為"true",才會有該內容.
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=$parsePath["content"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                $conf["fileAccess::checkMultiFileExist"]["disableWebSearch"]="true";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                $conf["fileAccess::checkMultiFileExist"]["userDir"]="false";
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
                $conf["fileAccess::checkMultiFileExist"]["web"]="false";
                #參考資料:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                #$result["varName"][$i]結果未實作
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果執行異常
                if($checkMultiFileExist["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果有路徑無法存取
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行正常識別
                        $result["status"]="true";

                        #設置路徑找不到
                        $result["found"]="false";

                        #針對每個路徑的搜尋結果
                        foreach($checkMultiFileExist["varExist"] as $index => $found){

                                #設置路徑尋找結果
                                $result["content"][]=array("found"=>$found,"path"=>$checkMultiFileExist["varNameFullPath"][$index]);

                                }#foreach end

                        #回傳結果
                        return $result;

                        }#if end

                #設置路徑有找到
                $result["found"]="true";

                #設置執行正常識別
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function checkPathExist end

        /*
        #函式說明:
        #demo建立pdf檔
        #必填參數:
        #無
        #可省略參數:
        #無
        #參考資料:
        #tcpdf=>http://www.tcpdf.org/examples.php
        #備註:
        #開發中,需要安裝 php-tcpdf 套件.
        */
        public static function demoCreateTcPdfFile(){

                #避免 TCPDF ERROR: Some data has already been output, can't send PDF file 錯誤產生
                ob_end_clean();

                #create new PDF document
                $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

                #set document information
                $pdf->SetCreator(PDF_CREATOR);
                $pdf->SetAuthor('qbpwc');
                $pdf->SetTitle('pdf sample title');
                $pdf->SetSubject('pdf sample subject');
                $pdf->SetKeywords('pdf, sample, tcpdf, qbpwc');

                #set default header data
                $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
                $pdf->setFooterData(array(0,64,0), array(0,64,128));

                #set header and footer fonts
                $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
                $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

                #set default monospaced font
                $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

                #set margins
                $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
                $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
                $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

                #set auto page breaks
                $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

                #set image scale factor
                $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

                #set some language-dependent strings (optional)
                if (@file_exists(dirname(__FILE__).'/lang/eng.php')){

                        require_once(dirname(__FILE__).'/lang/eng.php');

                        $pdf->setLanguageArray($l);

                        }#if end

                #set default font subsetting mode
                $pdf->setFontSubsetting(true);

                #Set font
                #dejavusans is a UTF-8 Unicode font, if you only need to
                #print standard ASCII chars, you can use core fonts like
                #helvetica or times to reduce file size.
                $pdf->SetFont('dejavusans', '', 14, '', true);

                #Add a page
                #This method has several options, check the source code documentation for more information.
                $pdf->AddPage();

                #set text shadow effect
                $pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

                #Set some content to print
                $html="<h5>Hello World!</h5>";

                // Print text using writeHTMLCell()
                $pdf->writeHTMLCell(0,0,'','',$html,0,1,0,true,'',true);

                // Close and output PDF document
                // This method has several options, check the source code documentation for more information.
                $pdf->Output('fileAccessT/example_001.pdf','I');

                }#function demoCreateTcPdfFile end

        /*
        #函式說明:
        #取得檔案路徑字串的路徑與檔案的名稱與檔案副檔名
        #回傳的結果:
        #$result["status"],執行是否正常,"true"正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函式名稱.
        #$result["filePath"],路徑字串.
        #$result["fileName"],檔案名稱字串.
        #$result["fileExtention"],檔案的副檔名.
        #$result["fullFileName"],含副檔名的檔案名稱.
        #$result["fullFilePathAndName"],完整的檔案路徑(含副檔名).
        #必填參數:
        #$conf["fileAddressAndName"],字串,檔案名稱與其路徑.
        $conf["fileAddressAndName"]="";
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getFileAddressAndNameAndFileExtention(&$conf){

                #初始化要回傳的參數
                $result=array();

                #取得當前執行函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileAddressAndName");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("outputAddress","noDownload");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(".bin/".$conf["cppAddress"].".bin","true");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkArguments["status"] 等於 "false"
                if($checkArguments["status"]=="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkArguments["passed"] 等於 "false"
                if($checkArguments["passed"]=="false"){

                        #設置 $result["status"] 為 "false"
                        $result["status"]="false";

                        #設置 $result["error"]
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #確認路徑是否為絕對路徑
                #函式說明:
                #取得符合特定字首與字尾的字串
                #回傳結果:
                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                #$result["function"],當前執行的函數名稱.
                #$result["error"],錯誤訊息陣列.
                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                #$result["content"],符合條件的字串,去掉字首字尾後的結果.
                #$result["returnString"],爲符合字首字、尾條件的字串內容。
                #$result["argu"],使用的參數.
                #必填參數:
                #$conf["checkString"],字串,要檢查的字串.
                $conf["fileAccess::getMeetConditionsString"]["checkString"]=$conf["fileAddressAndName"];
                #可省略參數:
                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                $conf["fileAccess::getMeetConditionsString"]["frontWord"]="/";
                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                #$conf["tailWord"]="";
                #參考資料:
                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                #備註:
                #無.
                $getMeetConditionsString=search::getMeetConditionsString($conf["fileAccess::getMeetConditionsString"]);
                unset($conf["fileAccess::getMeetConditionsString"]);

                #如果執行出錯
                if($getMeetConditionsString["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMeetConditionsString;

                        #回傳結果
                        return $result;

                        }#if end

                #預設參數 $conf["fileAddressAndName"] 不為 "/" 開始
                $fileAddressAndNameStarFromRoot="true";

                #如果是 "/" 開頭
                if($getMeetConditionsString["founded"]==="false"){

                        #設置參數 $conf["fileAddressAndName"] 為 "/" 開始
                        $fileAddressAndNameStarFromRoot="true";

                        }#if end

                #檢查是否有路徑資訊
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳的參數:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess"]["spiltString"]["stringIn"]=$conf["fileAddressAndName"];#要處理的字串。
                $conf["stringProcess"]["spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                $spiledResult=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
                unset($conf["stringProcess"]["spiltString"]);

                #如果 $spiledResult["status"] 等於 "false"
                if($spiledResult["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiledResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $spiledResult["dataCounts"] 大於 1
                if($spiledResult["dataCounts"]>1){

                        #代表有路徑字串

                        #初始化路徑字串暫存變數
                        $tempPathStr="";

                        #如果是絕對路徑
                        if($fileAddressAndNameStarFromRoot==="true"){

                                #加上根目錄
                                $tempPathStr=$tempPathStr."/";

                                }#if end

                        #取得路徑字串
                        for($i=0;$i<$spiledResult["dataCounts"]-1;$i++){

                                #串連片段路徑字串
                                $tempPathStr=$tempPathStr.$spiledResult["dataArray"][$i]."/";

                                }#for end

                        #取得檔案的路徑
                        $result["filePath"]=$tempPathStr;

                        }#if end

                #反之 $spiledResult["dataCounts"] 等於 1
                else{

                        #檔案的路徑設為""
                        $result["filePath"]="";

                        }#else end

                #取得檔案名稱(含副檔名)
                $result["fullFileName"]=$spiledResult["dataArray"][$spiledResult["dataCounts"]-1];

                #取得副檔名
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳的參數:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess"]["spiltString"]["stringIn"]=$result["fullFileName"];#要處理的字串。
                $conf["stringProcess"]["spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
                $spiledResult=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
                unset($conf["stringProcess"]["spiltString"]);

                #如果 $spiledResult["status"] 等於 "false"
                if($spiledResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiledResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $spiledResult["dataCounts"] 大於 1
                if($spiledResult["dataCounts"]>1){

                        #代表有副檔名

                        #初始化檔名字串暫存變數
                        $tempFileNameStr="";

                        #取得路徑字串
                        for($i=0;$i<$spiledResult["dataCounts"]-1;$i++){

                                #如果是最後一個小黑點前面的字串片段
                                if($i==$spiledResult["dataCounts"]-2){

                                        #串連片段路徑字串
                                        $tempFileNameStr=$tempFileNameStr.$spiledResult["dataArray"][$i];

                                        }#if end

                                #反之不是最後一個小黑點前面的字串片段
                                else{

                                        #串連片段路徑字串(含小黑點)
                                        $tempFileNameStr=$tempFileNameStr.$spiledResult["dataArray"][$i].".";

                                        }#else end

                                }#for end

                        #取得檔名
                        $result["fileName"]=$tempFileNameStr;

                        #取得副檔名
                        $result["fileExtention"]=$spiledResult["dataArray"][$spiledResult["dataCounts"]-1];

                        }#if end

                #反之 $spiledResult["dataCounts"] 等於 1
                else{

                        #檔案的副檔名設為""
                        $result["fileExtention"]="";

                        #取得檔案的名稱
                        $result["fileName"]=$spiledResult["dataArray"][0];

                        }#else end

                #如果 $result["fileExtention"] 不等於 ""
                if($result["fileExtention"]!=""){

                        #將副檔名用小黑點跟檔案名稱連在一塊
                        $result["fullFileName"]=$result["fileName"].".".$result["fileExtention"];

                        }#if end

                #反之代表沒有副檔名
                else{

                        #取得含副檔名的檔案名稱
                        $result["fullFileName"]=$result["fileName"].$result["fileExtention"];

                        }#else end

                #完整的檔案路徑(含副檔名).
                $result["fullFilePathAndName"]=$result["filePath"].$result["fullFileName"];

                #設置執行正常的識別
                $result["status"]="true";

                #回傳結果
                return $result;

                }#funciton getFileAddressAndNameAndFileExtention end

        /*
        #函式說明:
        #將資料夾或檔案打包成tar檔案
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["function"],當前執行的函數名稱
        #$result["error"],錯誤訊息.
        #$result["content"],檔案輸出後的位置與名稱.
        #必填參數:
        #$conf["packetTarget"],陣列,要打包的每個資料夾與檔案位置
        $conf["packetTarget"]=array("");
        #$conf["createdTarFile"],字串,打包好的檔案要放在哪裡,副檔名.tar會自動加上.
        $conf["createdTarFile"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function makeTarFile(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","packetTarget","createdTarFile");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #若檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #若檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化打包要用的tar指令參數
                $paramsArray=array("-cvf",$conf["createdTarFile"].".tar");

                #檢查要打包的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=$conf["packetTarget"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查要打包的檔案失敗
                if($checkMultiFileExist["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要打包的檔案有缺
                if($checkMultiFileExist["allExist"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #有幾個要打包的目標就執行幾次
                for($i=0;$i<count($conf["packetTarget"]);$i++){

                        #串接上要打包的檔案或資料夾
                        $paramsArray[]=$conf["packetTarget"][$i];

                        }#for end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
                #必填參數:
                #$conf["command"],字串,要執行的指令.
                $conf["external::callShell"]["command"]="tar";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=$paramsArray;
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
                $conf["external::callShell"]=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行shell失敗
                if($callShell["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #打包好的檔案位置與名稱
                $result["content"]=$conf["createdTarFile"].".tar";

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function makeTarFile end

        /*
        #函式說明:
        #將一個檔案壓縮成xz檔案
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["function"],當前執行的函數名稱
        #$result["error"],錯誤訊息.
        #$result["content"],檔案輸出後的位置與名稱.
        #必填參數:
        #$conf["compressTarget"],字串,要打包的每個資料夾與檔案位置
        $conf["compressTarget"]="";
        #$conf["createdXzFile"],字串,打包好的檔案要放在哪裡,副檔名.xz會自動加上.
        $conf["createdXzFile"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function makeXzFile(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","compressTarget","createdXzFile");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #若檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #若檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查要用xz壓縮的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["compressTarget"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查要用xz壓縮的檔案失敗
                if($checkMultiFileExist["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要用xz壓縮的檔案有缺
                if($checkMultiFileExist["allExist"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #壓縮要用的xz語法
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["output"],爲執行完二元碼後的輸出陣列
                #必填的參數
                $conf["external::callShell"]["command"]="xz";#要執行的指令與參數
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-v","-v","-z","-c",$conf["compressTarget"],">",$conf["createdXzFile"].".xz ");
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"true".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #參考資料:
                #http://php.net/manual/en/function.exec.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行shell失敗
                if($callShell["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #壓縮好的檔案位置與名稱
                $result["content"]=$conf["createdXzFile"].".xz";

                #執行到這邊代表執行正常
                $result["status"]="status";

                #回傳結果
                return $result;

                }#function makeXzFile end

        /*
        #函式說明:
        #將資料夾或檔案打包壓縮成tar.xz檔案
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["function"],當前執行的函數名稱
        #$result["error"],錯誤訊息.
        #$result["content"],檔案輸出後的位置與名稱.
        #必填參數:
        #$conf["compressTarget"],陣列,要打包壓縮的每個資料夾與檔案位置
        $conf["compressTarget"]=array();
        #$conf["createdTarXzFile"],字串,打包壓縮好的檔案要放在哪裡,副檔名.tar.xz會自動加上.
        $conf["createdTarXzFile"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        #$conf["commentsArray"]=array("");
        #$conf["includeDotStart"],字串,當參數$conf["commentsArray"]含有星號時是否要包含「.」開頭的檔案目錄,預設為"false",不包含,"true"為要包含.
        #$conf["includeDotStart"]="false";
        #$conf["includeWaveEnd"],字串,當參數$conf["commentsArray"]含有星號時是否要包含「~」結尾的檔案.預設為"false",不包含,"true"為要包含.
        #$conf["includeWaveEnd"]="false";
        #參考資料:
        #無.
        #備註:
        #建議加上 --exclude-backups, --exclude-caches-all
        */
        public static function makeTarXzFile(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","compressTarget","createdTarXzFile");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("commentsArray","includeDotStart","includeWaveEnd");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"false","false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #若檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #若檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["commentsArray"] 有設定
                if(isset($conf["commentsArray"])){

                        #印出提示文字
                        #函式說明:
                        #印出多行文字,結尾自動換行.
                        #回傳的結果:
                        #$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #必填參數:
                        #$conf["outputStringArray"],字串陣列,每行要印出的文字內容.
                        $conf["cmd::echoMultiLine"]["outputStringArray"]=$conf["commentsArray"];
                        $echoMultiLine=cmd::echoMultiLine($conf["cmd::echoMultiLine"]);
                        unset($conf["cmd::echoMultiLine"]);

                        #如果印出提示文字失敗
                        if($echoMultiLine["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$echoMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #解析要處理的檔案路徑
                #函式說明:
                #將含有「*」的多個檔案路徑名稱,變成多個符合條件的路徑檔案.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],字串陣列,多個解析回來的檔案路徑字串.
                #$result["pathCount"],整數,有幾個路徑.
                #必填參數:
                #$conf["path"],字串陣列,要解析含有「*」的檔案路徑字串.
                $conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]["path"]=$conf["compressTarget"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["noDotStart"],字串,"true"代表不包含「.」開頭的名稱,預設為"false"代表包含「.」開頭的名稱.
                $conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]["noDotStart"]=$conf["includeDotStart"]==="true"?"false":"true";
                #$conf["noWaveEnd"],字串,預設為"true"代表不包含「~」結尾的名稱,"false"代表包含結尾為「~」的名稱.
                $conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]["noWaveEnd"]=$conf["includeWaveEnd"]==="true"?"false":"true";
                $realPathArray=fileAccess::resolveMultiPostionStringWhichContainStarSymbol($conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]);
                unset($conf["fileAccess::resolveMultiPostionStringWhichContainStarSymbol"]);

                #如果解析路徑失敗
                if($realPathArray["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$realPathArray;

                        #回傳結果
                        return $result;

                        }#if end

                #取得解析好的檔案路徑陣列
                $conf["compressTarget"]=$realPathArray["content"];

                #將路徑轉換成相對路徑
                #函式說明:
                #將多個路徑字串變成相對於當前路徑的相對路徑字串
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],字串陣列,多個轉換好的相對路徑字串.
                #必填參數:
                #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
                $conf["fileAccess::getRelativePath"]["path"]=$conf["compressTarget"];
                #$conf["fileArgu"],字串,當前路徑.
                $conf["fileAccess::getRelativePath"]["fileArgu"]=$conf["fileArgu"];
                $getRelativePath=fileAccess::getRelativePath($conf["fileAccess::getRelativePath"]);
                unset($conf["fileAccess::getRelativePath"]);

                #如果轉換失敗
                if($getRelativePath["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$getRelativePat;

                        #回傳結果
                        return $result;

                        }#if end

                #打包成tar檔
                #函式說明:
                #將資料夾或檔案打包成tar檔案
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["function"],當前執行的函數名稱
                #$result["error"],錯誤訊息.
                #$result["content"],檔案輸出後的位置與名稱.
                #必填參數:
                #$conf["fileAccess::makeTarFile"]["packetTarget"],陣列,要打包的每個資料夾與檔案位置
                $conf["fileAccess::makeTarFile"]["packetTarget"]=$getRelativePath["content"];
                #$conf["fileAccess::makeTarFile"]["createdTarFile"],字串,打包好的檔案要放在哪裡,副檔名.tar會自動加上.
                $conf["fileAccess::makeTarFile"]["createdTarFile"]=$conf["createdTarXzFile"];
                #$conf["fileAccess::makeTarFile"]["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::makeTarFile"]["fileArgu"]=$conf["fileArgu"];
                $makeTarFile=fileAccess::makeTarFile($conf["fileAccess::makeTarFile"]);
                unset($conf["fileAccess::makeTarFile"]);

                #如果打包失敗
                if($makeTarFile["status"]=="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$makeTarFile;

                        #回傳結果
                        return $result;

                        }#if end

                #壓縮成xz檔
                #函式說明:
                #將一個檔案壓縮成xz檔案
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["function"],當前執行的函數名稱
                #$result["error"],錯誤訊息.
                #$result["content"],檔案輸出後的位置與名稱.
                #必填參數:
                #$conf["fileAccess::makeXzFile"]["compressTarget"],字串,要打包的每個資料夾與檔案位置
                $conf["fileAccess::makeXzFile"]["compressTarget"]=$makeTarFile["content"];
                #$conf["fileAccess::makeXzFile"]["createdXzFile"],字串,打包好的檔案要放在哪裡,副檔名.xz會自動加上.
                $conf["fileAccess::makeXzFile"]["createdXzFile"]=$makeTarFile["content"];
                #$conf["fileAccess::makeXzFile"]["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::makeXzFile"]["fileArgu"]=$conf["fileArgu"];
                $makeXzFile=fileAccess::makeXzFile($conf["fileAccess::makeXzFile"]);
                unset($conf["fileAccess::makeXzFile"]);

                #如果壓縮失敗
                if($makeXzFile["status"]=="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$makeXzFile;

                        #回傳結果
                        return $result;

                        }#if end

                #移除tar檔案
                #函式說明:
                #移除檔案
                #回傳結果:
                #$result["status"],"true"代表移除成功,"false"代表移除失敗.
                #$result["error"],錯誤訊息陣列
                #$result["warning"],警告訊息陣列
                #$result["function"],當前執行的函數名稱
                #必填參數:
                $conf["fileAccess::delFile"]["fileAddress"]=$makeTarFile["content"];#要移除檔案的位置
                #$conf["fileAccess::delFile"]["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::delFile"]["fileArgu"]=$conf["fileArgu"];
                $delFile=fileAccess::delFile($conf["fileAccess::delFile"]);
                unset($conf["fileAccess::delFile"]);

                #如果移除tar檔案失敗
                if($delFile["status"]=="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$delFile;

                        #回傳結果
                        return $result;

                        }#if end

                #取得壓縮好的檔案位置與名稱
                $result["content"]=$makeXzFile["content"];

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function makeTarXzFile end

        /*
        #函式說明:
        #移動檔案
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["function"],當前執行的函數名稱
        #$result["error"],錯誤訊息.
        #$result["content"],檔案輸出後的位置與名稱.
        #必填參數:
        #$conf["from"],字串,要移動的檔案名稱與位置.
        $conf["from"]="";
        #$conf["to"],字串,要移動到的位置與名稱
        $conf["to"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        #$conf["commentsArray"]=array("");
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function mv(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("from","to","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("commentsArray");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #若檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #若檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["commentsArray"] 有設定
                if(isset($conf["commentsArray"])){

                        #印出提示文字
                        #函式說明:
                        #印出多行文字,結尾自動換行.
                        #回傳的結果:
                        #$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #必填參數:
                        #$conf["outputStringArray"],字串陣列,每行要印出的文字內容.
                        $conf["cmd::echoMultiLine"]["outputStringArray"]=$conf["commentsArray"];
                        $echoMultiLine=cmd::echoMultiLine($conf["cmd::echoMultiLine"]);
                        unset($conf["cmd::echoMultiLine"]);

                        #如果印出提示文字失敗
                        if($echoMultiLine["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$echoMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #檢查要移動的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["from"]);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查失敗
                if($checkMultiFileExist["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果來源檔案不存在
                if($checkMultiFileExist["allExist"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="檔案「".$conf["from"]."」不存在";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["output"],爲執行完二元碼後的輸出陣列
                #必填的參數
                $conf["external::callShell"]["command"]="mv";#要執行的指令與參數
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"]; #__FILE__的內容
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-v",$conf["from"],$conf["to"]);
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["external::callShell"]["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"true".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #參考資料:
                #http://php.net/manual/en/function.exec.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果移動檔案失敗
                if($callShell["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #執行到這邊代表正常
                $result["status"]="true";

                #儲存移動後的位置與名稱
                $result["content"]=$conf["to"];

                #回傳結果
                return $result;

                }#function mv end

        /*
        #函式說明:
        #取得目錄底下所有目錄與檔案的樹狀結構.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["position"],根目錄位置.
        #$result["content"],陣列,檔案目錄的樹狀結構.
        #$result["content"][$i]["name"],根目錄底下第$i+1個檔案或目錄的名稱
        #$result["content"][$i]["folder"],根目錄底下第$i+1個名稱是目錄("true")還是檔案("false").
        #$result["content"][$i]["position"],根目錄底下第$i+1個名稱或目錄的位置.
        #$result["content"][$i]["ownerPerm"],根目錄底下第$i+1個使用者的權限.
        #$result["content"][$i]["groupPerm"],根目錄底下第$i+1個群組使用者的權限.
        #$result["content"][$i]["otherPerm"],根目錄底下第$i+1個其他使用者的權限.
        #$result["content"][$i]["ownerName"],根目錄底下第$i+1個擁有者賬戶.
        #$result["content"][$i]["groupName"],根目錄底下第$i+1個群組擁有者賬戶.
        #$result["content"][$i]["next"][$j]["name"],第$i+1個為目錄的名稱的目錄底下第$j+1個檔案或目錄的名稱
        #$result["content"][$i]["next"][$j]["folder"],第$i+1個為目錄的名稱的目錄底下第$j+1個名稱是目錄("true")還是檔案("false").
        #$result["content"][$i]["next"][$j]["position"],第$i+1個為目錄的名稱的目錄底下第$j+1個名稱或目錄的位置.
        #$result["content"][$i]["next"][$j]["ownerPerm"],第$i+1個為目錄的名稱的目錄底下第$j+1個使用者的權限.
        #$result["content"][$i]["next"][$j]["groupPerm"],第$i+1個為目錄的名稱的目錄底下第$j+1個群組使用者的權限.
        #$result["content"][$i]["next"][$j]["otherPerm"],第$i+1個為目錄的名稱的目錄底下第$j+1個其他使用者的權限.
        #$result["content"][$i]["next"][$j]["ownerName"],第$i+1個為目錄的名稱的目錄底下第$j+1個擁有者賬戶.
        #$result["content"][$i]["next"][$j]["groupName"],第$i+1個為目錄的名稱的目錄底下第$j+1個群組擁有者賬戶.
        #以此類推...
        #必填參數:
        #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
        $conf["position"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getListTree(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查必填參數
                #函式說明:
                #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                $conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
                $conf["variableCheck.isexistMulti"]["variableCheck"]=array("fileArgu","position");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                #可以省略的參數:
                $conf["variableCheck.isexistMulti"]["variableType"]=array("string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
                $conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                $checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
                unset($conf["variableCheck.isexistMulti"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果目錄不為 . 與 ..
                if(basename($conf["position"])!="." && basename($conf["position"])!=".."){

                        #檢查目錄是否存在
                        #函式說明:
                        #檢查多個檔案與資料夾是否存在.
                        #回傳的結果:
                        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$resutl["function"],當前執行的涵式名稱.
                        #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                        #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                        #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                        #必填參數:
                        $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["position"]);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                        #參考資料來源:
                        #http://php.net/manual/en/function.file-exists.php
                        #http://php.net/manual/en/control-structures.foreach.php
                        $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                        unset($conf["fileAccess::checkMultiFileExist"]);

                        #如果檢查目錄失敗
                        if($checkMultiFileExist["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$checkMultiFileExist;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果目錄不存在
                        if($checkMultiFileExist["varExist"][0]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$checkMultiFileExist;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #取得根目錄的樹狀結構
                #函式說明:
                #取得目錄底下所有目錄與檔案清單.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],陣列,目錄底下的檔案與子目錄.
                #$result["content"][$i]["name"],字串,目錄底下的檔案與子目錄的名稱.
                #$result["content"][$i]["folder"],字串,第$i+1個名稱為目錄還是檔案.
                #$result["folder"],字串,當前目標為目錄還是檔案"true"代表為目錄,"false"代表為檔案.
                #$result["position"],目前的位置.
                #必填參數:
                #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                $conf["fileAccess::getList"]["position"]=$conf["position"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::getList"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #無
                #參考資料來源:
                #opendir=>http://php.net/manual/en/function.opendir.php
                #is_dir=>http://php.net/manual/en/function.is-dir.php
                $rootList=fileAccess::getList($conf["fileAccess::getList"]);
                unset($conf["fileAccess::getList"]);

                #如果取得根目錄底下的資料失敗
                if($rootList["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$rootList;

                        #回傳結果
                        return $result;

                        }#if end

                #取得當前目錄
                $result["position"]=$rootList["position"];

                #取得根目錄層級可以看到的檔案與目錄
                $result["content"]=$rootList["content"];

                #如果當前目錄有檔案與子目錄
                if(isset($result["content"])){

                        #當前層級有幾個檔案目錄就執行幾次
                        for($i=0;$i<count($result["content"]);$i++){

                                #如果該單位是目錄
                                if($result["content"][$i]["folder"]=="true"){

                                        #呼叫當前函數,取得 $conf["position"]."/".$result["content"][$i]["name"] 目錄底下的檔案目錄資訊
                                        #函式說明:
                                        #取得目錄底下所有目錄與檔案的樹狀結構.
                                        #回傳結果:
                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["function"],函數名稱.
                                        #$result["content"],陣列,檔案目錄的樹狀結構.
                                        #$result["total"],根目錄底下有多少目錄與檔案
                                        #必填參數:
                                        #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                                        $conf["fileAccess::getListTree"]["position"]=$conf["position"]."/".$result["content"][$i]["name"];
                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                        $conf["fileAccess::getListTree"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        #無
                                        $getListTree=fileAccess::getListTree($conf["fileAccess::getListTree"]);
                                        unset($conf["fileAccess::getListTree"]);

                                        #如果取得 $conf["position"]."/".$result["content"][$i]["name"] 目錄底下的檔案目錄資訊失敗
                                        if($getListTree["status"]=="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$getListTree;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果 $conf["position"]."/".$result["content"][$i]["name"] 目錄有檔案與子目錄
                                        if(isset($getListTree["content"])){

                                                #取得 $conf["position"]."/".$result["content"][$i]["name"] 目錄底下的檔案目錄資訊
                                                $result["content"][$i]["next"]=$getListTree["content"];

                                                }#if end

                                        #取得當前目錄
                                        $result["content"][$i]["position"]=$rootList["position"];

                                        }#if end

                                }#for end

                        }#if end

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getListTree end

        /*
        #函式說明:
        #取得目錄底下所有目錄與檔案清單.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],陣列,目錄底下的檔案與子目錄.
        #$result["content"][$i]["name"],字串,目錄底下的檔案與子目錄的名稱.
        #$result["content"][$i]["folder"],字串,第$i+1個名稱為目錄還是檔案.
        #$result["content"][$i]["ownerPerm"],字串,使用者的權限.
        #$result["content"][$i]["groupPerm"],字串,群組使用者的權限.
        #$result["content"][$i]["otherPerm"],字串,其他使用者的權限.
        #$result["content"][$i]["ownerName"],字串,擁有者賬戶.
        #$result["content"][$i]["groupName"],字串,群組擁有者賬戶.
        #$result["folder"],字串,當前目標為目錄還是檔案"true"代表為目錄,"false"代表為檔案.
        #$result["position"],目前的位置.
        #必填參數:
        #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
        $conf["position"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無
        #參考資料:
        #opendir=>http://php.net/manual/en/function.opendir.php
        #is_dir=>http://php.net/manual/en/function.is-dir.php
        #備註:
        #無.
        */
        public static function getList(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #初始化記載檔案目錄名單的陣列
                $result["content"]=array();

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查必填參數
                #函式說明:
                #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                $conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
                $conf["variableCheck.isexistMulti"]["variableCheck"]=array("fileArgu","position");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                #可以省略的參數:
                $conf["variableCheck.isexistMulti"]["variableType"]=array("string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
                $conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                $checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
                unset($conf["variableCheck.isexistMulti"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查目標路徑是否為「/」開頭的路徑
                #函式說明:
                #取得符合特定字首與字尾的字串
                #回傳結果:
                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                #$result["function"],當前執行的函數名稱.
                #$result["error"],錯誤訊息陣列.
                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                #$result["returnString"],爲符合字首條件的字串內容。
                #必填參數:
                #$conf["checkString"],字串,要檢查的字串.
                $conf["search::getMeetConditionsString"]["checkString"]=$conf["position"];
                #可省略參數:
                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                $conf["search::getMeetConditionsString"]["frontWord"]="/";
                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                #$conf["tailWord"]="";
                #參考資料:
                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                unset($conf["search::getMeetConditionsString"]);

                #如果檢查關鍵字失敗
                if($getMeetConditionsString["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMeetConditionsString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果目標路徑不為「/」開頭的路徑,則為相對路徑
                if($getMeetConditionsString["founded"]=="false"){

                        #取得目標位置的路徑
                        #函式說明:
                        #將檔案的位置名稱變成網址
                        #回傳結果:
                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],函數名稱.
                        #$result["content"],網址.
                        #$result["localAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「/」目錄開始的路徑.
                        #$result["fileSystemAbsoulutePosition"],針對伺服器檔案系統的絕對位置.
                        #必填參數:
                        #$conf["address"],字串,檔案的相對位置.
                        $conf["fileAccess::getInternetAddress"]["address"]=$conf["position"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                        $conf["fileAccess::getInternetAddress"]["fileArgu"]=$conf["fileArgu"];
                        #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是.
                        #$conf["fileAccess::getInternetAddress"]["userDir"]="true";
                        $getInternetAddress=fileAccess::getInternetAddress($conf["fileAccess::getInternetAddress"]);
                        unset($conf["fileAccess::getInternetAddress"]);

                        #如果將檔案的位置名稱變成網址失敗
                        if($getInternetAddress["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$getInternetAddress;

                                #回傳結果
                                return $result;

                                }#if end

                        #置換目標位置為檔案系統路徑的絕對位置
                        $conf["position"]=$getInternetAddress["fileSystemAbsoulutePosition"];

                        }#if end

                #如果目標是資料夾
                if(is_dir($conf["position"])) {

                        #設置為資料夾
                        $result["folder"]="true";

                        #如果開啟資料夾成功
                        if($dh=opendir($conf["position"])){

                                #初始化計數變數
                                $count=0;

                                #如果資料夾裡面有檔案
                                while(($fileName=readdir($dh))!==false){

                                        #debug
                                        #echo "有檔案";

                                        #如果名稱是「.」或「..」
                                        if($fileName=="." || $fileName==".."){

                                                #則跳過
                                                continue;

                                                }#if end

                                        #取得檔案或子目錄名稱
                                        $result["content"][$count]["name"]=$fileName;

                                        #取得詳細資訊
                                        #函式說明:
                                        #取得節點的資訊.
                                        #回傳結果:
                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["function"],函數名稱.
                                        #$result["content"],檔案資訊陣列.
                                        #$result["content"]["is_folder"],是否為目錄,"true"代表是,"false"代表不是.
                                        #$result["content"]["ownerPerm"],檔案擁有者權限資訊.
                                        #$result["content"]["groupPerm"],檔案歸屬群組權限資訊.
                                        #$result["content"]["otherPerm"],檔案對於其他身份使用者的權限資訊.
                                        #$result["content"]["subElementCount"],目錄底下的檔案目錄數量.
                                        #$result["content"]["ownerName"],檔案擁有着資訊.
                                        #$result["content"]["groupName"],檔案所屬擁有着資訊.
                                        #$result["content"]["size"],檔案大小.
                                        #$result["content"]["modifyDate"],檔案變更年月日.
                                        #$result["content"]["modifyTime"],檔案變更時分秒.
                                        #$result["content"]["modifyTimeFloat"],檔案變更時間秒的float數值.
                                        #$result["content"]["timezone"],檔案變更時間的時區與UTC的差距.
                                        #必填參數:
                                        #$conf["fileArgu"],字串,當前檔案的位置亦即__FILE__的內容.
                                        $conf["fileAccess::fileInfo"]["fileArgu"]=$conf["fileArgu"];
                                        #$conf["file"],字串,要查看擁有者資訊的檔案.
                                        $conf["fileAccess::fileInfo"]["file"]=$conf["position"]."/".$fileName;
                                        #可省略參數:
                                        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                                        $conf["fileAccess::fileInfo"]["web"]="false";
                                        #參考資料:
                                        #fileowner=>http://php.net/manual/en/function.fileowner.php
                                        #posix_getpwuid=>http://php.net/manual/en/function.posix-getpwuid.php
                                        #備註:
                                        #無.
                                        $fileInfo=fileAccess::fileInfo($conf["fileAccess::fileInfo"]);
                                        unset($conf["fileAccess::fileInfo"]);

                                        #如果執行失敗
                                        if($fileInfo["status"]=="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$fileInfo;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #設置是否為資料夾
                                        $result["content"][$count]["folder"]=$fileInfo["content"]["is_folder"];

                                        #設置使用者的權限
                                        $result["content"][$count]["ownerPerm"]=$fileInfo["content"]["ownerPerm"];

                                        #設置群組的權限
                                        $result["content"][$count]["groupPerm"]=$fileInfo["content"]["groupPerm"];

                                        #設置其他使用者的權限
                                        $result["content"][$count]["otherPerm"]=$fileInfo["content"]["otherPerm"];

                                        #設置其擁有者賬戶
                                        $result["content"][$count]["ownerName"]=$fileInfo["content"]["ownerName"];

                                        #設置其群組擁有者賬戶
                                        $result["content"][$count]["groupName"]=$fileInfo["content"]["groupName"];

                                        #計數加1
                                        $count++;

                                        }#while

                                #關閉資料夾
                                closedir($dh);

                                }#if end

                        #開啟資料夾失敗
                        else{

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"][]="開啟資料夾「".$conf["position"]."」失敗";

                                #回傳結果
                                return $result;

                                }#else end

                        }#if end

                #反之是檔案
                else{

                        #設置不為目錄
                        $result["folder"]="false";

                        }#else end

                #取得目前位置
                $result["position"]=$conf["position"];

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getList end

        /*
        #函式說明:
        #取得目錄底下所有目錄與檔案的樹狀結構.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],陣列,檔案目錄的樹狀結構.
        #必填參數:
        #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
        $conf["position"]="";
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function exportListTree(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查必填參數
                #函式說明:
                #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                $conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
                $conf["variableCheck.isexistMulti"]["variableCheck"]=array("position");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                #可以省略的參數:
                $conf["variableCheck.isexistMulti"]["variableType"]=array("string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
                $conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                $checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
                unset($conf["variableCheck.isexistMulti"]);

                #如果檢查失敗
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #取得目錄底下所有目錄與檔案的樹狀結構.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],陣列,檔案目錄的樹狀結構.
                #必填參數:
                #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                $conf["fileAccess::getListTree"]["position"]=$conf["position"];
                #可省略參數:
                #無
                #備註:
                #若檔案與目錄的名稱含有「[」與「]」與「(」與「)」將會無法取得其目錄底下的內容
                #若檔案與目錄的名稱含有「 」將會無法檢查檔案是否存在
                #改用opendir()函數應該可以解決大部分的bug.
                $getListTree=fileAccess::getListTree($conf["fileAccess::getListTree"]);
                unset($conf["fileAccess::getListTree"]);

                #如果取得 目標目錄底下所有目錄與檔案的樹狀結構 失敗
                if($getListTree["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getListTree;

                        #回傳結果
                        return $result;

                        }#if end

                #目標目錄底下有幾個

                }#function exportListTree end

        /*
        #函式說明:
        #解壓縮tar.xz檔案,解壓縮完畢後,tar.xz檔案會被移除.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #必填參數:
        #$conf["tarXzFile"],字串變數,壓縮檔的位置與名稱,副檔名".tar.xz"會自動補上.
        $conf["tarXzFile"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["extractTo"],字串,要解壓縮到哪邊,預設為當前路徑"."
        #$conf["extractTo"]=".";
        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        #$conf["commentsArray"]=array("");
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function unpackTarXzFile(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","tarXzFile");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("commentsArray","extractTo");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,".");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #若檢查失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #若檢查不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["commentsArray"] 有設定
                if(isset($conf["commentsArray"])){

                        #印出提示文字
                        #函式說明:
                        #印出多行文字,結尾自動換行.
                        #回傳的結果:
                        #$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #必填參數:
                        #$conf["outputStringArray"],字串陣列,每行要印出的文字內容.
                        $conf["cmd::echoMultiLine"]["outputStringArray"]=$conf["commentsArray"];
                        $echoMultiLine=cmd::echoMultiLine($conf["cmd::echoMultiLine"]);
                        unset($conf["cmd::echoMultiLine"]);

                        #如果印出提示文字失敗
                        if($echoMultiLine["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$echoMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #檢查要移動的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["tarXzFile"].".tar.xz");#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查失敗
                if($checkMultiFileExist["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果來源檔案不存在
                if($checkMultiFileExist["allExist"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="檔案「".$conf["tarXzFile"].".tar.xz」不存在";

                        #回傳結果
                        return $result;

                        }#if end

                #進行解壓縮xz檔
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["cmd"],執行的指令內容.
                #$result["output"],爲執行完二元碼後的輸出陣列.
                #必填的參數
                #$conf["command"],字串,要執行的指令與.
                $conf["fileAccess::callShell"]["command"]="xz -v -v -d -f ".$conf["tarXzFile"].".tar.xz";
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                #$conf["fileAccess::callShell"]["argu"]=array();
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"true".
                #$conf["escapeshellarg"]="true";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["fileAccess::callShell"]);
                unset($conf["fileAccess::callShell"]);

                #如果解壓縮xz檔案失敗
                if($callShell["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #解壓縮tar檔
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["cmd"],執行的指令內容.
                #$result["output"],爲執行完二元碼後的輸出陣列.
                #必填的參數
                #$conf["command"],字串,要執行的指令與.
                $conf["fileAccess::callShell"]["command"]="tar";
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["fileAccess::callShell"]["argu"]=array("-xvf",$conf["tarXzFile"]."tar",$conf["extractTo"]);
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"true".
                $conf["fileAccess::callShell"]["escapeshellarg"]="true";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["fileAccess::callShell"]);
                unset($conf["fileAccess::callShell"]);

                #如果解壓縮xz檔案失敗
                if($callShell["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #移除tar檔
                #函式說明:
                #移除檔案
                #回傳結果:
                #$result["status"],"true"代表移除成功,"false"代表移除失敗.
                #$result["error"],錯誤訊息陣列
                #$result["warning"],警告訊息陣列
                #$result["function"],當前執行的函數名稱
                #必填參數:
                $conf["fileAccess::delFile"]["fileAddress"]=$conf["tarXzFile"].".tar";#要移除檔案的位置
                #可省略參數:
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::delFile"]["fileArgu"]=$conf["fileArgu"];
                #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
                #$conf["commentsArray"]=array("");
                $delFile=fileAccess::delFile($conf["fileAccess::delFile"]);
                unset($conf["fileAccess::delFile"]);

                #如果移除檔案失敗
                if($delFile["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$delFile;

                        #回傳結果
                        return $result;

                        }#if end

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function unpackTarXzFile end

        /*
        #函式說明:
        #用data:mimeType;base64,fileVar的形式來提供檔案的連結,亦即檔案儲存在變數裡面.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息
        #$result["content"],檔案變數的內容
        #$result["fileTypeName"],副檔名,ex:「.tar.xz」.
        #$result["function"],當前執行的函數名稱
        #必填參數:
        #$conf["filePosition"],要轉存成2元碼的檔案位置與名稱
        $conf["filePosition"]="";
        #$conf["mimeType"],2元碼的內容是什麼
        $conf["mimeType"]="";
        #可省略參數:
        #$conf["compressType"],2元碼壓縮的方式,預設為"base64".
        #$conf["compressType"]="base64";
        #$conf["delFile"],讀取完檔案後,要移除檔案嗎?"true"代表要移除,"false"代表不要移除,預設為"false".
        #$conf["delFile"]="false";
        #參考資料:
        #將檔案用字串變數儲存起來=>http://php.net/manual/en/function.file-get-contents.php
        #壓縮2元碼=>http://php.net/manual/en/function.base64-encode.php
        #備註:
        #無.
        */
        public static function data(&$conf){

                #初始化要回傳的內容
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("filePosition");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("mimeType","compressType","delFile");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,「null」代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("null","base64","false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkResult["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkResult["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #依據檔案名稱取得副檔名 $result["fileTypeName"]
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳的參數:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=basename($conf["filePosition"]);#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
                #備註:
                #建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割字串失敗
                if($spiltString["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化副檔名
                $result["fileTypeName"]="";

                #如果只有一段代表沒有副檔名
                if($spiltString["dataCounts"]==1){

                        #副檔名設置為 "unknow"
                        $result["fileTypeName"]="unknow";

                        }#if end

                #不符合以上條件,但至少有兩段
                else if($spiltString["dataCounts"]>=2){

                        #執行 $spiltString["dataCounts"] 減一次的迴圈
                        for($i=1;$i<$spiltString["dataCounts"];$i++){

                                #串接副檔名
                                $result["fileTypeName"]=$result["fileTypeName"].".".$spiltString["dataArray"][$i];

                                }#for end

                        }#if end

                #讀取檔案內容
                $fileBin=file_get_contents($conf["filePosition"],"rb");

                #編碼檔案
                $base64fileBin=base64_encode($fileBin);

                #如果 $conf["delFile"] 等於 "true"
                if($conf["delFile"]=="true"){

                        #移除檔案
                        #函式說明:
                        #移除檔案
                        #回傳結果:
                        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
                        #$result["error"],錯誤訊息陣列
                        #$result["warning"],警告訊息陣列
                        #$result["function"],當前執行的函數名稱
                        #必填參數:
                        $conf["fileAccess::delFile"]["fileAddress"]=$conf["filePosition"];#要移除檔案的位置
                        $del=fileAccess::delFile($conf["fileAccess::delFile"]);
                        unset($conf["fileAccess::delFile"]);

                        #如果移除圖片失敗
                        if($del["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$del;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #放置檔案的語法
                $result["content"]="data:".$conf["mimeType"].";".$conf["compressType"].",".$base64fileBin;

                #執行到這邊代表執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function data end

        /*
        #函式說明:
        #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["argu"],使用的參數.
        #$result["content"],網址,若是在命令列執行,則為"null".
        #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
        #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「/」目錄開始的路徑.
        #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
        #必填參數:
        #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
        $conf["address"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
        #$conf["userDir"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getInternetAddress(&$conf){

                #初始化要回傳的變數
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("address","fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("userDir");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查失敗
                if($checkResult["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkResult["passed"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果是本來就是網址了
                if(strpos($conf["address"],'https://')===0 || strpos($conf["address"],'http://')===0){

                        #設置執行正常
                        $result["status"]="true";

                        #取得網址
                        $result["content"]=$conf["address"];

                        #回傳結果
                        return $result;

                        }#if end

                #解析 $conf["fileArgu"]
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳的參數:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["fileArgu"];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割字串失敗
                if($spiltString["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將多個路徑字串變成相對於當前路徑的相對路徑字串
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],字串陣列,多個轉換好的相對路徑字串.
                #必填參數:
                #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
                $conf["fileAccess::getRelativePath"]["path"]=array($conf["address"]);
                #$conf["fileArgu"],字串,當前路徑.
                $conf["fileAccess::getRelativePath"]["fileArgu"]=$conf["fileArgu"];
                $getRelativePath=fileAccess::getRelativePath($conf["fileAccess::getRelativePath"]);
                unset($conf["fileAccess::getRelativePath"]);

                #如果取得相對位置失敗
                if($getRelativePath["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$getRelativePath;

                        #回傳結果
                        return $result;

                        }#if end

                #取得轉換成相對路徑的位置
                $result["fileSystemRelativePosition"]=$getRelativePath["content"][0];

                #解析 $conf["fileArgu"]
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳的參數:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["fileArgu"];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割字串失敗
                if($spiltString["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #debug
                #var_dump($spiltString);
                #var_dump($_SERVER);

                #初始化檔案在伺服器上的檔案系統位置
                $result["fileSystemAbsoulutePosition"]="/";

                #將最後一段捨棄
                for($i=0;$i<$spiltString["dataCounts"]-1;$i++){

                        $result["fileSystemAbsoulutePosition"]=$result["fileSystemAbsoulutePosition"].$spiltString["dataArray"][$i]."/";

                        }#for end

                #取得非直觀的絕對位置
                $result["fileSystemAbsoulutePosition"]=$result["fileSystemAbsoulutePosition"].$result["fileSystemRelativePosition"];

                #將檔案的相對路徑進行整理,變成可以直接讀的路徑.
                #函式說明:
                #將檔案目錄的絕對位置中的 "../" 剔除變成直觀的路徑.
                #回傳的結果:
                #$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
                #$result["function"],當前執行的函數.
                #$result["error"],錯誤訊息陣列.
                #$result["changedPath"],處理完後回傳的目錄字串.
                #$result["oriPath"],原始的路徑字串
                #必填參數:
                #$conf["stringProcess::changeDirByDotDotSolidus"]["dirStr"],字串,要處理的檔案目錄字串.
                $conf["stringProcess::changeDirByDotDotSolidus"]["dirStr"]=$result["fileSystemAbsoulutePosition"];
                $changeDirByDotDotSolidus=stringProcess::changeDirByDotDotSolidus($conf["stringProcess::changeDirByDotDotSolidus"]);
                unset($conf["stringProcess::changeDirByDotDotSolidus"]);

                #如果處理失敗
                if($changeDirByDotDotSolidus["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$changeDirByDotDotSolidus;

                        #回傳結果
                        return $result;

                        }#if end

                #改變為易讀的絕對路徑
                $result["fileSystemAbsoulutePosition"]=$changeDirByDotDotSolidus["changedPath"];

                #如果 $conf["userDir"] 為 "true"
                if($conf["userDir"]==="true"){

                        #重設為 絕對路徑 [/~家目錄名稱」
                        $result["webPathFromRoot"]="/~".$spiltString["dataArray"][1];

                        #從第四段到倒數第二段,將其內容合併
                        for($i=3;$i<$spiltString["dataCounts"]-1;$i++){

                                $result["webPathFromRoot"]=$result["webPathFromRoot"]."/".$spiltString["dataArray"][$i];

                                }#for end

                        }#if end

                #反之 $conf["userDir"] 為 "false",
                else{

                        #重設為 ""
                        $result["webPathFromRoot"]="";

                        #可能的根目錄層級 - start

                        #解析 $conf["fileArgu"]
                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳的參數:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #必填參數:
                        $conf["stringProcess::spiltString"]["stringIn"]=$_SERVER["PHP_SELF"];#要處理的字串。
                        $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                        $keyWord=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果處理失敗
                        if($keyWord["status"]==="false"){

                                #設置錯誤狀態
                                $result["status"]="false";

                                #設置錯誤提示
                                $result["error"]=$keyWord;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得關鍵字
                        $keyWord=$keyWord["dataArray"][0];

                        #預設層級為4層
                        $layer=4;

                        #檢查每個絕對路徑片段
                        for($i=0;$i<$spiltString["dataCounts"]-1;$i++){

                                #如果路徑片段等於 $keyWord
                                if($spiltString["dataArray"][$i]===$keyWord){

                                        #取得層級
                                        $layer=$i;

                                        #跳出迴圈
                                        break;

                                        }#if end

                                }#for end

                        #可能的根目錄層級 - end

                        #網頁於檔案系統中的存放路徑可能為「/var/www/html」,從第四段到倒數第二段,將其內容合併
                        for($i=$layer;$i<$spiltString["dataCounts"]-1;$i++){

                                $result["webPathFromRoot"]=$result["webPathFromRoot"]."/".$spiltString["dataArray"][$i];

                                }#for end

                        }#else end

                #加上檔案的路徑
                $result["webPathFromRoot"]=$result["webPathFromRoot"]."/".$conf["address"];

                #取得檔案位於網頁伺服器的絕對位置
                #函式說明:
                #取得用戶端的資訊,並依據需要寫入到資料表裡面
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表執行成功,"false"代表執行失敗.
                #$result["error"],錯誤訊息.
                #$result["function"],檔前執行的函數名稱.
                #$result["userBrowserType"],爲使用者的瀏覽器資訊
                #$result["userIp"],爲使用者的IP
                #$result["serverIp"],為伺服器的IP
                #$result["scheme"],通訊協定
                #$result["serverPort"],伺服器給對外下載網頁的port
                #$result["requestUri"],爲使用者要求的網址
                #$result["username"],爲使用者目前的帳戶,若爲""則表示尚未登入成功
                #$result["clientRequestIP"],用戶端要求的ip與port
                #必填參數:
                $conf["csInformation::getConnectionInfo"]["getAccount"]="false";#是否要取得帳號
                #可省略參數:
                #$conf["accountVar"]=$_SESSION["username"];#帳號儲存在哪個變數裏面,預設爲$_SESSION["username"]
                #$conf["saveToDb"]="true";#是否要除儲存到資料庫,"true"為要儲存",預設為不儲存
                #$conf["dbAddress"]=$dbAddress;;#爲mysql-Server的位置,若#$conf["saveToDb"]設為"true",則該參數為必填。
                #$conf["dbAccount"]=$dbAccount;#爲用於連入mysql-Server時要使用的帳號,若#$conf["saveToDb"]設為"true",則該參數為必填。
                #$conf["dbName"]=$dbName;#要選取的資料庫名稱,若#$conf["saveToDb"]設為"true",則該參數為必填。
                #$conf["tableName"]="visitorInfo";#爲要插入資料的資料表名稱,若#$conf["saveToDb"]設為"true",則該參數為必填。
                #$conf["columnName"]=array("username","userWebBrowser","userIp","requestUri","systemDateAndTime");#爲資料表的項目名稱,
                        #例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
                        #寫入的資料依序為,使用者帳戶、瀏覽器資訊、使用者IP、觀看的網址、當時的時間
                        #$conf["saveToDb"]設為"true",則該參數為必填。
                #$conf["dbPassword"]=$dbPassword;#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
                $getConnectionInfo=csInformation::getConnectionInfo($conf["csInformation::getConnectionInfo"]);
                unset($conf["csInformation::getConnectionInfo"]);

                #如果取得連線資訊失敗
                if($getConnectionInfo["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$getConnectionInfo;

                        #回傳結果
                        return $result;

                        }#if end

                #如果運行環境為 "web"
                if($getConnectionInfo["mode"]=="web"){

                        #為絕對路徑加上通訊協定與ip與port
                        #$result["content"]=$getConnectionInfo["scheme"]."://".$getConnectionInfo["serverIp"].":".$getConnectionInfo["serverPort"].$result["webPathFromRoot"];

                        #為絕對路徑加上用戶端通訊協定與ip與port
                        $result["content"]=$getConnectionInfo["scheme"]."://".$getConnectionInfo["clientRequestIP"].$result["webPathFromRoot"];

                        }#if end

                #反之如果為 "cmd" 環境
                else{

                        $result["content"]="null";

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getInternetAddress end

        /*
        #函式說明:
        #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["argu"],使用的參數.
        #$result["content"],網址,若是在命令列執行,則為"null".
        #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
        #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
        #必填參數:
        #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
        $conf["address"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
        #$conf["web"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getInternetAddressV2(&$conf){

                #初始化要回傳的變數
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #取得參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("address","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("web");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查失敗
                if($checkArguments["status"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]==="false"){

                        #設置錯誤狀態
                        $result["status"]="false";

                        #設置錯誤提示
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果是本來就是網址了
                if(strpos($conf["address"],'https://')===0 || strpos($conf["address"],'http://')===0){

                        #取得網址
                        $result["content"]=$conf["address"];

                        }#if end

                #反之是絕對或相對路徑
                else{

                        #確認 $conf["address"] 是否為 escaped 後的內容
                        #函式說明:
                        #判斷字串是否一定需要經過escapeshellarg才能為單一shell參數,並回傳可以成為單一shell參數的結果.
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$reuslt["error"],執行不正常結束的錯訊息陣列.
                        #$result["function"],當前執行的函式名稱.
                        #$result["argu"],使用的參數.
                        #$result["content"],字串,單一shell參數.
                        #$result["escaped"],字串,"true"代表content為 escape後的結果;反之為"false".
                        #$result["urlEncodeStr"],字串,未被escape過的單一shell參數被url encode後的結果.
                        #必填參數:
                        #$conf["str"],字串,認為要為單一 shell參數的字串.
                        $conf["stringProcess::toSingleShellArg"]["str"]=$conf["address"];
                        #可省略參數:
                        #無.
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $toSingleShellArg=stringProcess::toSingleShellArg($conf["stringProcess::toSingleShellArg"]);
                        unset($conf["stringProcess::toSingleShellArg"]);

                        #如果執行失敗
                        if($toSingleShellArg["status"]==="false"){

                                #設置錯誤狀態
                                $result["status"]="false";

                                #設置錯誤提示
                                $result["error"]=$toSingleShellArg;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得不含escape字元的address參數
                        $conf["address"]=urldecode($toSingleShellArg["urlEncodeStr"]);

                        #不是絕對位置
                        if(strpos($conf["address"],"/")!==0){

                                #如果有這些參數
                                if( isset($_SERVER['REQUEST_SCHEME']) && isset($_SERVER['SERVER_NAME']) && isset($_SERVER['SERVER_PORT']) ){

                                        #網址
                                        $result["content"]=$_SERVER['REQUEST_SCHEME']."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT']."/".$conf["address"];

                                        }#if end

                                #反之
                                else{

                                        #網址設置為 null
                                        $result["content"]=null;

                                        }#else

                                }#if end

                        #反之是絕對位置
                        else{

                                #移除開頭的 "/"
                                $conf["address"]=substr($conf["address"],1);

                                #如果有這些參數
                                if( isset($_SERVER['REQUEST_SCHEME']) && isset($_SERVER['SERVER_NAME']) && isset($_SERVER['SERVER_PORT']) ){

                                        #網址
                                        $result["content"]=$_SERVER['REQUEST_SCHEME']."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT']."/".$conf["address"];

                                        }#if end

                                #反之
                                else{

                                        #網址設置為 null
                                        $result["content"]=null;

                                        }#else

                                }#else end

                        #取得 doc root;
                        $docRoot=$_SERVER['DOCUMENT_ROOT'];

                        #如果不是網路環境
                        if($conf["web"]==="false"){

                                #不採用 docRoot
                                $docRoot="";

                                }#if end

                        #如果不存在 DOCUMENT_ROOT 變數或 web 參數為 "false" 且為相對位置.
                        if( ($_SERVER['DOCUMENT_ROOT']==="" || $conf["web"]==="false") && (strpos($result["argu"]["address"],"/")!==0) ){

                                #執行 "pwd" 取得當前位置
                                exec("pwd",$output,$status);

                                #預設為`pwd`的結果加"/"
                                $docRoot=$output[0]."/";

                                }#if end

                        #如果是絕對位置
                        else if(strpos($result["argu"]["address"],"/")===0){

                                #補回 "/"
                                $conf["address"]="/".$conf["address"];

                                }#if end

                        #針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                        $result["fileSystemAbsoulutePosition"]=$docRoot.$conf["address"];

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getInternetAddressV2 end

        /*
        #函式說明:
        #將含有「*」的檔案路徑名稱,變成多個符合條件的路徑檔案.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],字串陣列,多個解析回來的檔案路徑字串.
        #必填參數:
        #$conf["path"],字串,要解析含有「*」的檔案路徑字串.
        $conf["path"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["noDotStart"],字串,"true"代表不包含「.」開頭的名稱,預設為"false"代表包含「.」開頭的名稱.
        #$conf["noDotStart"]="true";
        #$conf["noWaveEnd"],字串,預設為"true"代表不包含「~」結尾的名稱,"false"代表包含結尾為「~」的名稱.
        #$conf["noWaveEnd"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function resolvePostionStringWhichContainStarSymbol(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path","fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("noDotStart","noWaveEnd");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","true");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkResult["status"] 等於 "fasle"
                if($checkResult["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkResult["passed"] 等於 "fasle"
                if($checkResult["passed"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #轉換檔案路徑為相對於伺服器檔案系統的絕對路徑
                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],網址.
                #$result["localAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「/」目錄開始的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器檔案系統的絕對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置.
                $conf["fileAccess::getInternetAddress"]["address"]=$conf["path"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddress"]["fileArgu"]=$conf["fileArgu"];
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是.
                $conf["fileAccess::getInternetAddress"]["userDir"]="true";
                $getInternetAddress=fileAccess::getInternetAddress($conf["fileAccess::getInternetAddress"]);
                unset($conf["fileAccess::getInternetAddress"]);

                #如果轉換路徑失敗
                if($getInternetAddress["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #取得轉換好的路徑
                $conf["path"]=$getInternetAddress["fileSystemAbsoulutePosition"];

                #檢查檔案路徑字串是否含有「*」
                #函式說明:
                #檢查字串裡面有無指定的關鍵字
                #回傳結果:
                #$result["status"],"true"代表執行成功,"false"代表執行失敗。
                #$result["error"],錯誤訊息
                #$result["function"],當前執行的函數名稱.
                #$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
                #$result["keyWordCount"],找到的關鍵字數量.
                #必填參數:
                $conf["search::findKeyWord"]["keyWord"]="*";#想要搜尋的關鍵字
                $conf["search::findKeyWord"]["string"]=$conf["path"];#要被搜尋的字串內容
                #可省略參數:
                #$conf["fileAccess::findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
                $findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
                unset($conf["search::findKeyWord"]);

                #如果尋找關鍵字出錯
                if($findKeyWord["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$findKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #如果含有「*」
                if($findKeyWord["founded"]=="true"){

                        #透過「/」分割路徑字串
                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳的參數:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #必填參數:
                        $conf["stringProcess::spiltString"]["stringIn"]=$conf["path"];#要處理的字串。
                        $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                        $spiltPathStr=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果分割字串失敗
                        if($spiltPathStr["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltPathStr;

                                #回傳結果
                                return $result;

                                }#if end

                        #初始化暫存展開後的檔案路徑字串
                        $extendPath=array("");

                        #要解析的路徑分成幾段就執行幾次
                        foreach($spiltPathStr["dataArray"] as $pathPart){

                                #檢查該段名稱是否有「*」
                                #函式說明:
                                #檢查字串裡面有無指定的關鍵字
                                #回傳結果:
                                #$result["status"],"true"代表執行成功,"false"代表執行失敗。
                                #$result["error"],錯誤訊息
                                #$result["function"],當前執行的函數名稱.
                                #$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
                                #$result["keyWordCount"],找到的關鍵字數量.
                                #必填參數:
                                $conf["search::findKeyWord"]["keyWord"]="*";#想要搜尋的關鍵字
                                $conf["search::findKeyWord"]["string"]=$pathPart;#要被搜尋的字串內容
                                #可省略參數:
                                #$conf["fileAccess::findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
                                $findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
                                unset($conf["search::findKeyWord"]);

                                #如果尋找關鍵字出錯
                                if($findKeyWord["status"]=="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$findKeyWord;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果不含「*」
                                if($findKeyWord["founded"]=="false"){

                                        #針對每個既有的路徑
                                        for($i=0;$i<count($extendPath);$i++){

                                                #加上切割好的路徑
                                                $extendPath[$i]=$extendPath[$i]."/".$pathPart;

                                                }#for end

                                        }#if end

                                #反之該段含有「*」
                                else{

                                        #用「*」分割該段
                                        #函式說明:
                                        #將固定格式的字串分開,並回傳分開的結果。
                                        #回傳的參數:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["oriStr"],要分割的原始字串內容
                                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                        #$result["dataCounts"],爲總共分成幾段
                                        #必填參數:
                                        $conf["stringProcess::spiltString"]["stringIn"]=$pathPart;#要處理的字串。
                                        $conf["stringProcess::spiltString"]["spiltSymbol"]="*";#爲以哪個符號作爲分割
                                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                        unset($conf["stringProcess::spiltString"]);

                                        #如果分字串失敗
                                        if($spiltString["status"]=="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$spiltStringByStar;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果用「*」分割後的段數為0
                                        if($spiltString["dataCounts"]==0){

                                                #初始化儲存符合條件的路徑
                                                $newExtendPath=array();

                                                #代表沒有塞選條件
                                                #當前有幾個符合條件的路徑就執行幾次
                                                for($i=0;$i<count($extendPath);$i++){

                                                        #取得該目錄下所有的東西
                                                        #取得該目錄底下的檔案目錄清單
                                                        #函式說明:
                                                        #取得目錄底下所有目錄與檔案清單.
                                                        #回傳結果:
                                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                                        #$result["error"],錯誤訊息陣列.
                                                        #$result["function"],函數名稱.
                                                        #$result["content"],陣列,目錄底下的檔案與子目錄.
                                                        #$result["content"][$i]["name"],字串,目錄底下的檔案與子目錄的名稱.
                                                        #$result["content"][$i]["folder"],字串,第$i+1個名稱為目錄還是檔案.
                                                        #$result["folder"],字串,當前目標為目錄還是檔案"true"代表為目錄,"false"代表為檔案.
                                                        #$result["position"],目前的位置.
                                                        #必填參數:
                                                        #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                                                        $conf["fileAccess::getList"]["position"]=$extendPath[$i];
                                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                                        $conf["fileAccess::getList"]["fileArgu"]=$conf["fileArgu"];
                                                        #可省略參數:
                                                        #無
                                                        #參考資料來源:
                                                        #opendir=>http://php.net/manual/en/function.opendir.php
                                                        #is_dir=>http://php.net/manual/en/function.is-dir.php
                                                        $getList=fileAccess::getList($conf["fileAccess::getList"]);
                                                        unset($conf["fileAccess::getList"]);

                                                        #如果取得目標目錄底下的檔案目錄清單失敗
                                                        if($getList["status"]=="false"){

                                                                #設置錯誤識別
                                                                $result["status"]="false";

                                                                #設置錯誤訊息
                                                                $result["error"]=$getList;

                                                                #回傳結果
                                                                return $result;

                                                                }#if end

                                                        #如果底下有東西
                                                        if(count($getList["content"])>0){

                                                                #初始化儲存要檢查的檔案或資料夾名稱陣列
                                                                $list=array();

                                                                #針對每個檔案或資料夾
                                                                foreach($getList["content"] as $num=>$array){

                                                                        #儲存該名稱
                                                                        $list[]=$array["name"];

                                                                        }#foreach end

                                                                #初始化儲存符合新條件字串的陣列
                                                                $tempExtendPath=array();

                                                                #針對每個現有的路徑字串
                                                                for($j=0;$j<count($extendPath);$j++){

                                                                        #附加每個符合條件的名稱到路徑字串裡面
                                                                        for($k=0;$k<count($list);$k++){

                                                                                #如果 $conf["noDotStart"] 為 "true"
                                                                                if($conf["noDotStart"]==="true"){

                                                                                        #將 $list[$k] 用 "/" 分割
                                                                                        #函式說明:
                                                                                        #將固定格式的字串分開,並回傳分開的結果。
                                                                                        #回傳結果:
                                                                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                                                                        #$result["error"],錯誤訊息陣列
                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                        #$result["oriStr"],要分割的原始字串內容
                                                                                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                                                                        #$result["dataCounts"],爲總共分成幾段
                                                                                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                                                                                        #必填參數:
                                                                                        $conf["stringProcess::spiltString"]["stringIn"]=$list[$k];#要處理的字串。
                                                                                        $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                                                                                        #可省略參數:
                                                                                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                                                                                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                                                                                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                                                                        unset($conf["stringProcess::spiltString"]);

                                                                                        #如果分割路徑失敗
                                                                                        if($spiltString["status"]==="false"){

                                                                                                #設置執行錯誤識別
                                                                                                $result["status"]="false";

                                                                                                #取得錯誤訊息
                                                                                                $result["error"]=$spiltString;

                                                                                                #回傳結果
                                                                                                return $result;

                                                                                                }#if end

                                                                                        #如果有關鍵字「/」存在
                                                                                        if($spiltString["found"]==="true"){

                                                                                                #針對每個段落
                                                                                                foreach($spiltString["dataArray"] as $pp){

                                                                                                        #看該符合的名稱開頭是否包含「.」
                                                                                                        #函式說明:
                                                                                                        #取得符合特定字首與字尾的字串
                                                                                                        #回傳結果:
                                                                                                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                                        #$result["error"],錯誤訊息陣列.
                                                                                                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                        #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                        #必填參數:
                                                                                                        #$conf["checkString"],字串,要檢查的字串.
                                                                                                        $conf["search::getMeetConditionsString"]["checkString"]=$pp;
                                                                                                        #可省略參數:
                                                                                                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                        $conf["search::getMeetConditionsString"]["frontWord"]=".";
                                                                                                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                        #$conf["search::getMeetConditionsString"]["tailWord"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];
                                                                                                        #參考資料:
                                                                                                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                        unset($conf["search::getMeetConditionsString"]);

                                                                                                        #如果 取得符合特定字首的字串 出錯
                                                                                                        if($getMeetConditionsString["status"]=="false"){

                                                                                                                #設置執行錯誤識別
                                                                                                                $result["status"]="false";

                                                                                                                #設置錯誤訊息
                                                                                                                $result["error"]=$getMeetConditionsString;

                                                                                                                #回傳結果
                                                                                                                return $result;

                                                                                                                }#if end

                                                                                                        #如果有「.」在開頭
                                                                                                        if($getMeetConditionsString["founded"]=="true"){

                                                                                                                #忽略這個名稱
                                                                                                                continue 2;

                                                                                                                }#if end

                                                                                                        }#foreach end

                                                                                                }#if end

                                                                                        #反之沒有關鍵字「/」存在
                                                                                        else{

                                                                                                #看該符合的名稱開頭是否包含「.」
                                                                                                #函式說明:
                                                                                                #取得符合特定字首與字尾的字串
                                                                                                #回傳結果:
                                                                                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                #必填參數:
                                                                                                #$conf["checkString"],字串,要檢查的字串.
                                                                                                $conf["search::getMeetConditionsString"]["checkString"]=$list[$k];
                                                                                                #可省略參數:
                                                                                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                $conf["search::getMeetConditionsString"]["frontWord"]=".";
                                                                                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                #$conf["search::getMeetConditionsString"]["tailWord"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];
                                                                                                #參考資料:
                                                                                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                unset($conf["search::getMeetConditionsString"]);

                                                                                                #如果 取得符合特定字首的字串 出錯
                                                                                                if($getMeetConditionsString["status"]=="false"){

                                                                                                        #設置執行錯誤識別
                                                                                                        $result["status"]="false";

                                                                                                        #設置錯誤訊息
                                                                                                        $result["error"]=$getMeetConditionsString;

                                                                                                        #回傳結果
                                                                                                        return $result;

                                                                                                        }#if end

                                                                                                #如果有「.」在開頭
                                                                                                if($getMeetConditionsString["founded"]=="true"){

                                                                                                        #忽略這個名稱
                                                                                                        continue;

                                                                                                        }#if end

                                                                                                }#else end

                                                                                        }#if end

                                                                                #如果 $conf["noWaveEnd"] 為 "true"
                                                                                if($conf["noWaveEnd"]==="true"){

                                                                                        #看該符合的名稱結尾是否包含「~」
                                                                                        #函式說明:
                                                                                        #取得符合特定字首與字尾的字串
                                                                                        #回傳結果:
                                                                                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                        #$result["error"],錯誤訊息陣列.
                                                                                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                        #$result["returnString"],爲符合字首條件的字串內容。
                                                                                        #必填參數:
                                                                                        #$conf["checkString"],字串,要檢查的字串.
                                                                                        $conf["search::getMeetConditionsString"]["checkString"]=$list[$k];
                                                                                        #可省略參數:
                                                                                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                        #$conf["search::getMeetConditionsString"]["frontWord"]=".";
                                                                                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                        $conf["search::getMeetConditionsString"]["tailWord"]="~";
                                                                                        #參考資料:
                                                                                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                        unset($conf["search::getMeetConditionsString"]);

                                                                                        #如果 取得符合特定字首的字串 出錯
                                                                                        if($getMeetConditionsString["status"]=="false"){

                                                                                                #設置執行錯誤識別
                                                                                                $result["status"]="false";

                                                                                                #設置錯誤訊息
                                                                                                $result["error"]=$getMeetConditionsString;

                                                                                                #回傳結果
                                                                                                return $result;

                                                                                                }#if end

                                                                                        #如果有「~」在結尾
                                                                                        if($getMeetConditionsString["founded"]=="true"){

                                                                                                #忽略這個名稱
                                                                                                continue;

                                                                                                }#if end

                                                                                        }#if end

                                                                                #暫存該符合的路徑
                                                                                $tempExtendPath[]=$extendPath[$j]."/".$list[$k];

                                                                                }#for end

                                                                        }#for end

                                                                #該次有幾個符合的路徑就執行幾次
                                                                foreach($tempExtendPath as $path){

                                                                        #暫存符合的路徑
                                                                        $newExtendPath[]=$path;

                                                                        }#for end

                                                                }#if end

                                                        #反之該目錄底下沒有東西
                                                        else{

                                                                #移除該 $extendPath[$i]
                                                                unset($extendPath[$i]);

                                                                }#else end

                                                        }#for end

                                                #置換原始符合條件字串的路徑字串陣列
                                                $extendPath=$newExtendPath;

                                                }#if end

                                                #反之用「*」分割後有分段
                                                else{

                                                        #初始化暫存符合條件的新路徑陣列變數
                                                        $newExtendPath=array();

                                                        #當前有幾個符合條件的路徑就執行幾次
                                                        for($i=0;$i<count($extendPath);$i++){

                                                                #取得該目錄下所有的東西
                                                                #函式說明:
                                                                #取得目錄底下所有目錄與檔案清單.
                                                                #回傳結果:
                                                                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                                                #$result["error"],錯誤訊息陣列.
                                                                #$result["function"],函數名稱.
                                                                #$result["content"],陣列,目錄底下的檔案與子目錄.
                                                                #$result["content"][$i]["name"],字串,目錄底下的檔案與子目錄的名稱.
                                                                #$result["content"][$i]["folder"],字串,第$i+1個名稱為目錄還是檔案.
                                                                #$result["folder"],字串,當前目標為目錄還是檔案"true"代表為目錄,"false"代表為檔案.
                                                                #$result["position"],目前的位置.
                                                                #必填參數:
                                                                #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                                                                $conf["fileAccess::getList"]["position"]=$extendPath[$i];
                                                                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                                                                $conf["fileAccess::getList"]["fileArgu"]=$conf["fileArgu"];
                                                                #可省略參數:
                                                                #無
                                                                #參考資料來源:
                                                                #opendir=>http://php.net/manual/en/function.opendir.php
                                                                #is_dir=>http://php.net/manual/en/function.is-dir.php
                                                                $getList=fileAccess::getList($conf["fileAccess::getList"]);
                                                                unset($conf["fileAccess::getList"]);

                                                                #如果取得目標目錄底下的檔案目錄清單失敗
                                                                if($getList["status"]=="false"){

                                                                        #設置錯誤識別
                                                                        $result["status"]="false";

                                                                        #設置錯誤訊息
                                                                        $result["error"]=$getList;

                                                                        #回傳結果
                                                                        return $result;

                                                                        }#if end

                                                                #如果底下有東西
                                                                if(count($getList["content"])>0){

                                                                        #初始化儲存要檢查的檔案或資料夾名稱陣列
                                                                        $list=array();

                                                                        #針對每個檔案或資料夾
                                                                        foreach($getList["content"] as $num=>$array){

                                                                                #儲存該名稱
                                                                                $list[]=$array["name"];

                                                                                }#foreach end

                                                                        #初始化儲存符合的名稱
                                                                        $passedName=array();

                                                                        #依據每個檔案目錄名稱,檢查有無符合篩選條件
                                                                        foreach($list as $filteredName){

                                                                                #初始化儲存被檢查的片段檔案資料夾名稱
                                                                                $partName=$filteredName;

                                                                                #依據 $pathPart 分割成幾段(關鍵字數量)就執行幾次
                                                                                for($i=0;$i<$spiltString["dataCounts"];$i++){

                                                                                        #尋找關鍵字 $spiltString["dataArray"][$i]
                                                                                        #函式說明:
                                                                                        #檢查字串裡面有無指定的關鍵字
                                                                                        #回傳結果:
                                                                                        #$result["status"],"true"代表執行成功,"false"代表執行失敗。
                                                                                        #$result["error"],錯誤訊息
                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                        #$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
                                                                                        #$result["keyWordCount"],找到的關鍵字數量.
                                                                                        #必填參數:
                                                                                        $conf["search::findKeyWord"]["keyWord"]=$spiltString["dataArray"][$i];#想要搜尋的關鍵字
                                                                                        $conf["search::findKeyWord"]["string"]=$partName;#要被搜尋的字串內容
                                                                                        #可省略參數:
                                                                                        #$conf["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
                                                                                        $findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
                                                                                        unset($conf["search::findKeyWord"]);

                                                                                        #如果尋找關鍵字失敗
                                                                                        if($findKeyWord["status"]=="false"){

                                                                                                #設置執行錯誤識別
                                                                                                $result["status"]="false";

                                                                                                #設置錯誤訊息
                                                                                                $result["error"]=$findKeyWord;

                                                                                                #回傳結果
                                                                                                return $result;

                                                                                                }#if end

                                                                                        #如果有找到關鍵字
                                                                                        if($findKeyWord["founded"]=="true"){

                                                                                                #如果是最後一段要檢查的關鍵字
                                                                                                if($i==$spiltString["dataCounts"]-1){

                                                                                                        #判斷該關鍵字是否在該未分割的 $pathPart(含有*字號的關鍵字字串) 的開頭
                                                                                                        #函式說明:
                                                                                                        #取得符合特定字首與字尾的字串
                                                                                                        #回傳結果:
                                                                                                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                                        #$result["error"],錯誤訊息陣列.
                                                                                                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                        #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                        #必填參數:
                                                                                                        #$conf["checkString"],字串,要檢查的字串.
                                                                                                        $conf["search::getMeetConditionsString"]["checkString"]=$pathPart;
                                                                                                        #可省略參數:
                                                                                                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                        $conf["search::getMeetConditionsString"]["frontWord"]=$spiltString["dataArray"][0];
                                                                                                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                        #$conf["tailWord"]="";
                                                                                                        #參考資料:
                                                                                                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                        unset($conf["search::getMeetConditionsString"]);

                                                                                                        #如果 取得符合特定字首的字串 出錯
                                                                                                        if($getMeetConditionsString["status"]=="false"){

                                                                                                                #設置執行錯誤識別
                                                                                                                $result["status"]="false";

                                                                                                                #設置錯誤訊息
                                                                                                                $result["error"]=$getMeetConditionsString;

                                                                                                                #回傳結果
                                                                                                                return $result;

                                                                                                                }#if end

                                                                                                        #如果關鍵字是在開頭
                                                                                                        if($getMeetConditionsString["founded"]=="true"){

                                                                                                                #判斷關鍵字是否在該檔案目錄名稱的開頭
                                                                                                                #函式說明:
                                                                                                                #取得符合特定字首與字尾的字串
                                                                                                                #回傳結果:
                                                                                                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                                #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                                #必填參數:
                                                                                                                #$conf["checkString"],字串,要檢查的字串.
                                                                                                                $conf["search::getMeetConditionsString"]["checkString"]=$filteredName;
                                                                                                                #可省略參數:
                                                                                                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                                $conf["search::getMeetConditionsString"]["frontWord"]=$spiltString["dataArray"][0];
                                                                                                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                                #$conf["tailWord"]="";
                                                                                                                #參考資料:
                                                                                                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                                unset($conf["search::getMeetConditionsString"]);

                                                                                                                #如果 取得符合特定字首的字串 出錯
                                                                                                                if($getMeetConditionsString["status"]=="false"){

                                                                                                                        #設置執行錯誤識別
                                                                                                                        $result["status"]="false";

                                                                                                                        #設置錯誤訊息
                                                                                                                        $result["error"]=$getMeetConditionsString;

                                                                                                                        #回傳結果
                                                                                                                        return $result;

                                                                                                                        }#if end

                                                                                                                #如果關鍵字不在開頭
                                                                                                                if($getMeetConditionsString["founded"]=="false"){

                                                                                                                        #不符合條件,跳過該檔案目錄名稱
                                                                                                                        break;

                                                                                                                        }#if end

                                                                                                                }#if end

                                                                                                        #判斷最後一個關鍵字是否在該未分割的 $pathPart(含有*字號的關鍵字字串) 的結尾
                                                                                                        #函式說明:
                                                                                                        #取得符合特定字首與字尾的字串
                                                                                                        #回傳結果:
                                                                                                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                        #$result["function"],當前執行的函數名稱.
                                                                                                        #$result["error"],錯誤訊息陣列.
                                                                                                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                        #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                        #必填參數:
                                                                                                        #$conf["checkString"],字串,要檢查的字串.
                                                                                                        $conf["search::getMeetConditionsString"]["checkString"]=$pathPart;
                                                                                                        #可省略參數:
                                                                                                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                        #$conf["search::getMeetConditionsString"]["frontWord"]=$partName;
                                                                                                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                        $conf["search::getMeetConditionsString"]["tailWord"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];
                                                                                                        #參考資料:
                                                                                                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                        unset($conf["search::getMeetConditionsString"]);

                                                                                                        #如果 取得符合特定字尾的字串 出錯
                                                                                                        if($getMeetConditionsString["status"]=="false"){

                                                                                                                #設置執行錯誤識別
                                                                                                                $result["status"]="false";

                                                                                                                #設置錯誤訊息
                                                                                                                $result["error"]=$getMeetConditionsString;

                                                                                                                #回傳結果
                                                                                                                return $result;

                                                                                                                }#if end

                                                                                                        #如果關鍵字是在字尾
                                                                                                        if($getMeetConditionsString["founded"]=="true"){

                                                                                                                #判斷關鍵字是否在該片段的開頭
                                                                                                                #函式說明:
                                                                                                                #取得符合特定字首與字尾的字串
                                                                                                                #回傳結果:
                                                                                                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                                #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                                #必填參數:
                                                                                                                #$conf["checkString"],字串,要檢查的字串.
                                                                                                                $conf["search::getMeetConditionsString"]["checkString"]=$filteredName;
                                                                                                                #可省略參數:
                                                                                                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                                #$conf["search::getMeetConditionsString"]["frontWord"]=$partName;
                                                                                                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                                $conf["search::getMeetConditionsString"]["tailWord"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];
                                                                                                                #參考資料:
                                                                                                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                                unset($conf["search::getMeetConditionsString"]);

                                                                                                                #如果 取得符合特定字首的字串 出錯
                                                                                                                if($getMeetConditionsString["status"]=="false"){

                                                                                                                        #設置執行錯誤識別
                                                                                                                        $result["status"]="false";

                                                                                                                        #設置錯誤訊息
                                                                                                                        $result["error"]=$getMeetConditionsString;

                                                                                                                        #回傳結果
                                                                                                                        return $result;

                                                                                                                        }#if end

                                                                                                                #如果關鍵字不在結尾
                                                                                                                if($getMeetConditionsString["founded"]=="false"){

                                                                                                                        #不符合條件,跳過該檔案目錄名稱
                                                                                                                        break;

                                                                                                                        }#if end

                                                                                                                }#if end

                                                                                                        #如果 $conf["noDotStart"] 為 "true"
                                                                                                        if($conf["noDotStart"]==="true"){

                                                                                                                #看該符合的名稱開頭是否包含「.」
                                                                                                                #函式說明:
                                                                                                                #取得符合特定字首與字尾的字串
                                                                                                                #回傳結果:
                                                                                                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                                #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                                #必填參數:
                                                                                                                #$conf["checkString"],字串,要檢查的字串.
                                                                                                                $conf["search::getMeetConditionsString"]["checkString"]=$filteredName;
                                                                                                                #可省略參數:
                                                                                                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                                $conf["search::getMeetConditionsString"]["frontWord"]=".";
                                                                                                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                                #$conf["search::getMeetConditionsString"]["tailWord"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];
                                                                                                                #參考資料:
                                                                                                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                                unset($conf["search::getMeetConditionsString"]);

                                                                                                                #如果 取得符合特定字首的字串 出錯
                                                                                                                if($getMeetConditionsString["status"]=="false"){

                                                                                                                        #設置執行錯誤識別
                                                                                                                        $result["status"]="false";

                                                                                                                        #設置錯誤訊息
                                                                                                                        $result["error"]=$getMeetConditionsString;

                                                                                                                        #回傳結果
                                                                                                                        return $result;

                                                                                                                        }#if end

                                                                                                                #如果有「.」在開頭
                                                                                                                if($getMeetConditionsString["founded"]=="true"){

                                                                                                                        #中斷迴圈
                                                                                                                        break;

                                                                                                                        }#if end

                                                                                                                }#if end

                                                                                                        #如果 $conf["noWaveEnd"] 為 "true"
                                                                                                        if($conf["noWaveEnd"]==="true"){

                                                                                                                #看該符合的名稱結尾是否包含「~」
                                                                                                                #函式說明:
                                                                                                                #取得符合特定字首與字尾的字串
                                                                                                                #回傳結果:
                                                                                                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                                                                                                #$result["returnString"],爲符合字首條件的字串內容。
                                                                                                                #必填參數:
                                                                                                                #$conf["checkString"],字串,要檢查的字串.
                                                                                                                $conf["search::getMeetConditionsString"]["checkString"]=$filteredName;
                                                                                                                #可省略參數:
                                                                                                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                                                                                                #$conf["search::getMeetConditionsString"]["frontWord"]=".";
                                                                                                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                                                                                                $conf["search::getMeetConditionsString"]["tailWord"]="~";
                                                                                                                #參考資料:
                                                                                                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                                                                                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                                                                                                unset($conf["search::getMeetConditionsString"]);

                                                                                                                #如果 取得符合特定字首的字串 出錯
                                                                                                                if($getMeetConditionsString["status"]=="false"){

                                                                                                                        #設置執行錯誤識別
                                                                                                                        $result["status"]="false";

                                                                                                                        #設置錯誤訊息
                                                                                                                        $result["error"]=$getMeetConditionsString;

                                                                                                                        #回傳結果
                                                                                                                        return $result;

                                                                                                                        }#if end

                                                                                                                #如果有「~」在結尾
                                                                                                                if($getMeetConditionsString["founded"]=="true"){

                                                                                                                        #中斷迴圈
                                                                                                                        break;

                                                                                                                        }#if end

                                                                                                                }#if end

                                                                                                        #取得該符合的名稱
                                                                                                        $passedName[]=$filteredName;

                                                                                                        #中斷迴圈
                                                                                                        break;

                                                                                                        }#if end

                                                                                                #將 $partName 從左到關鍵字結束的部份剔除
                                                                                                #函式說明:
                                                                                                #將特定字串前面的內容剔除
                                                                                                #回傳結果:
                                                                                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                                                                                #$result["error"],錯誤訊息陣列.
                                                                                                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                                                                                #$result["function"],當前執行的函數名稱.
                                                                                                #$result["oriStr"],要處理的原始字串內容.
                                                                                                #$result["content"],處理好的的字串內容.
                                                                                                #必填參數:
                                                                                                $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$partName;#要處理的字串.
                                                                                                $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$spiltString["dataArray"][$i];#特定字串.
                                                                                                $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                                                                                unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                                                                                #如果將 $partName 從左到關鍵字結束的部份剔除失敗
                                                                                                if($delStrBeforeKeyWord["status"]=="false"){

                                                                                                        #設置執行錯誤識別
                                                                                                        $result["status"]="false";

                                                                                                        #設置錯誤訊息
                                                                                                        $result["error"]=$delStrBeforeKeyWord;

                                                                                                        #回傳結果
                                                                                                        return $result;

                                                                                                        }#if end

                                                                                                #如果沒有找到特定關鍵字字串
                                                                                                if($delStrBeforeKeyWord["founded"]=="false"){

                                                                                                        #設置執行錯誤識別
                                                                                                        $result["status"]="false";

                                                                                                        #設置錯誤訊息
                                                                                                        $result["error"]=$delStrBeforeKeyWord;

                                                                                                        #回傳結果
                                                                                                        return $result;

                                                                                                        }#if end

                                                                                                #取得剔除過關鍵字前字串的字串
                                                                                                $partName=$delStrBeforeKeyWord["content"];

                                                                                                }#if end

                                                                                        #反之關鍵字不存在
                                                                                        else{

                                                                                                #儲存被拋棄的片段
                                                                                                #$result["dismissLog"][]="片段「".$partName."」沒有關鍵字「".$spiltString["dataArray"][$i]."」";

                                                                                                #該名稱不符合條件
                                                                                                break;

                                                                                                }#else end

                                                                                        }#for end

                                                                                }#foreach end

                                                                        #初始化儲存符合的暫存路徑
                                                                        $tempExtendPath=array();

                                                                        #針對每個現有的路徑字串
                                                                        for($j=0;$j<count($extendPath);$j++){

                                                                                #附加每個符合條件的名稱到路徑字串裡面
                                                                                for($k=0;$k<count($passedName);$k++){

                                                                                        #暫存該符合的路徑
                                                                                        $tempExtendPath[]=$extendPath[$j]."/".$passedName[$k];

                                                                                        }#for end

                                                                                }#for end

                                                                        #該次有幾個符合的路徑就執行幾次
                                                                        foreach($tempExtendPath as $path){

                                                                                #暫存符合的路徑
                                                                                $newExtendPath[]=$path;

                                                                                }#foreach end

                                                                        }#if end

                                                                #反之該目錄底下沒有東西
                                                                else{

                                                                        #移除該 $extendPath[$i]
                                                                        unset($extendPath[$i]);

                                                                        }#else end

                                                                }#for end

                                                        #如果有新的路徑產生
                                                        if(count($newExtendPath)>0){

                                                                #置換原始符合條件字串的路徑字串陣列
                                                                $extendPath=$newExtendPath;

                                                                }#if end

                                                        #反之找不到後續符合的路徑
                                                        else{

                                                                $extendPath=array();

                                                                }#else end

                                                        }#else end

                                        }#else end

                                }#foreach end

                        }#if end

                #反之沒有含有「*」
                else{

                        #判斷 $conf["path"] 是否存在
                        #函式說明:
                        #檢查多個檔案與資料夾是否存在.
                        #回傳的結果:
                        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$resutl["function"],當前執行的涵式名稱.
                        #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                        #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                        #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                        #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                        #必填參數:
                        #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                        $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["path"]);
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數
                        #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                        #$conf["disableWebSearch"]="false";
                        #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                        #$conf["userDir"]="true";
                        #參考資料來源:
                        #http://php.net/manual/en/function.file-exists.php
                        #http://php.net/manual/en/control-structures.foreach.php
                        #備註:
                        #函數file_exists檢查的路徑為檔案系統的路徑
                        $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                        unset($conf["fileAccess::checkMultiFileExist"]);

                        #如果檢查失敗
                        if($checkMultiFileExist["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$checkMultiFileExist;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果存在
                        if($checkMultiFileExist["varExist"][0]=="true"){

                                #初始化暫存展開後的檔案路徑字串
                                $extendPath=array($conf["path"]);

                                }#if end

                        #反之不存在
                        else{

                                #置換符合的路徑為空字串
                                $extendPath=array();

                                }#else end

                        #初始化暫存展開後的檔案路徑字串
                        $extendPath=array($conf["path"]);

                        }#else end

                #取得解析完「*」的檔案路徑字串
                $result["content"]=$extendPath;

                #取得有幾個檔案路徑
                $result["pathCount"]=count($result["content"]);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function resolvePostionStringWhichContainStarSymbol end

        /*
        #函式說明:
        #將含有「*」的多個檔案路徑名稱,變成多個符合條件的路徑檔案.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],字串陣列,多個解析回來的檔案路徑字串.
        #$result["pathCount"],整數,有幾個路徑.
        #必填參數:
        #$conf["path"],字串陣列,要解析含有「*」的檔案路徑字串.
        $conf["path"]=array();
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["noDotStart"],字串,"true"代表不包含「.」開頭的名稱,預設為"false"代表包含「.」開頭的名稱.
        #$conf["noDotStart"]="true";
        #$conf["noWaveEnd"],字串,預設為"true"代表不包含「~」結尾的名稱,"false"代表包含結尾為「~」的名稱.
        #$conf["noWaveEnd"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function resolveMultiPostionStringWhichContainStarSymbol(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path","fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("noDotStart","noWaveEnd");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","true");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkResult["status"] 等於 "fasle"
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkResult["passed"] 等於 "fasle"
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #針對每個要解析的路徑字串
                foreach($conf["path"] as $path){

                        #函式說明:
                        #將含有「*」的檔案路徑名稱,變成多個符合條件的路徑檔案.
                        #回傳結果:
                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],函數名稱.
                        #$result["content"],字串陣列,多個解析回來的檔案路徑字串.
                        #必填參數:
                        #$conf["path"],字串,要解析含有「*」的檔案路徑字串.
                        $conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]["path"]=$path;
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                        $conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["noDotStart"],字串,"true"代表不包含「.」開頭的名稱,預設為"false"代表包含「.」開頭的名稱.
                        $conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]["noDotStart"]=$conf["noDotStart"];
                        #$conf["noWaveEnd"],字串,預設為"true"代表不包含「~」結尾的名稱,"false"代表包含結尾為「~」的名稱.
                        $conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]["noWaveEnd"]=$conf["noWaveEnd"];
                        $resolvePostionStringWhichContainStarSymbol=fileAccess::resolvePostionStringWhichContainStarSymbol($conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]);
                        unset($conf["fileAccess::resolvePostionStringWhichContainStarSymbol"]);

                        #如果解析失敗
                        if($resolvePostionStringWhichContainStarSymbol["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$resolvePostionStringWhichContainStarSymbol;

                                #回傳結果
                                return $result;

                                }#if end

                        #針對每個解析出來的路徑
                        foreach($resolvePostionStringWhichContainStarSymbol["content"] as $filteredPath){

                                #儲存符合條件的路徑
                                $result["content"][]=$filteredPath;

                                }#foreach end

                        }#foreach end

                #如果有路徑存在
                if(isset($result["content"])){

                        #取得有幾個路徑
                        $result["pathCount"]=count($result["content"]);

                        }#if end

                #反之
                else{

                        #設置空的路徑結果
                        $result["content"]=array();

                        #取得有幾個路徑
                        $result["pathCount"]=count($result["content"]);

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function resolveMultiPostionStringWhichContainStarSymbol end

        /*
        #函式說明:
        #將多個路徑字串變成相對於當前路徑的相對路徑字串
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["argu"],使用的參數.
        #$result["content"],字串陣列,多個轉換好的相對路徑字串.
        #$result["cmd"],使用的指令.
        #必填參數:
        #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
        $conf["path"]=array();
        #$conf["fileArgu"],字串,當前路徑.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["baseFrom"],字串,指定要依據哪個位置為起點的起始位置,預設不指定,代表使用當前路徑.
        #$conf["baseFrom"]="";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getRelativePath(&$conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path","fileArgu");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("baseFrom");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkResult["status"] 等於 "false"
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkResult["passed"] 等於 "fasle"
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["fileAccess::spiltString"]["stringIn"]=$conf["fileArgu"];
                #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                $conf["fileAccess::spiltString"]["spiltSymbol"]="/";
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["fileAccess::spiltString"]["allowEmptyStr"]="false";
                #參考資料:
                #無.
                #備註:
                #無.
                $spiltString=stringProcess::spiltString($conf["fileAccess::spiltString"]);
                unset($conf["fileAccess::spiltString"]);

                #如果執行失敗
                if($spiltString["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有關鍵字
                if($spiltString["found"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #取得 $conf["fileArgu"] 的路徑
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["fileArgu"];
                #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                #參考資料:
                #無.
                #備註:
                #無.
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果執行失敗
                if($spiltString["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                /*
                #break point
                var_dump($spiltString);
                exit;
                */

                #預設 fileArgu 的路徑為 ""
                $fileArguPath="";

                #針對每個目錄
                for($i=0;$i<$spiltString["dataCounts"]-1;$i++){

                        #串接路徑
                        $fileArguPath=$fileArguPath."/".$spiltString["dataArray"][$i];

                        }#for end

                #取得相對於目標的當前位置
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #$result["escape"],陣列,儲存重新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
                #必填參數:
                #$conf["command"],字串,要執行的指令.
                $conf["external::callShell"]["command"]="cd";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array($fileArguPath,";","pwd");
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #如果執行失敗
                if(!isset($callShell["output"][0])){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                /*
                #break point
                var_dump($callShell);
                exit;
                */

                #記錄執行的指令
                $result["cmd"][]=$callShell["cmd"];

                #保存相對於目標的當前位置
                $pwd=$callShell["output"][0];

                #更新 fileArgu
                $conf["fileArgu"]=$pwd."/".$spiltString["dataArray"][$spiltString["dataCounts"]-1];

                #針對每個 $conf["path"]
                foreach($conf["path"] as $path){

                        #將 $path 變成易讀的格式
                        #函式說明:
                        #將檔案目錄的絕對位置中的 "../" 剔除變成直觀的路徑.
                        #回傳的結果:
                        #$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
                        #$result["function"],當前執行的函數.
                        #$result["error"],錯誤訊息陣列.
                        #$result["changedPath"],處理完後回傳的目錄字串.
                        #$result["oriPath"],原始的路徑字串
                        #必填參數:
                        #$conf["dirStr"],字串,要處理的檔案目錄字串.
                        $conf["stringProcess::changeDirByDotDotSolidus"]["dirStr"]=$path;
                        $changeDirByDotDotSolidus=stringProcess::changeDirByDotDotSolidus($conf["stringProcess::changeDirByDotDotSolidus"]);
                        unset($conf["stringProcess::changeDirByDotDotSolidus"]);

                        #如果處理失敗
                        if($changeDirByDotDotSolidus["status"]==="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$changeDirByDotDotSolidus;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得易讀的路徑
                        $path=$changeDirByDotDotSolidus["changedPath"];

                        #判斷 $path 是否為絕對路徑
                        #函式說明:
                        #取得符合特定字首與字尾的字串
                        #回傳結果:
                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                        #$result["returnString"],爲符合字首條件的字串內容。
                        #必填參數:
                        #$conf["checkString"],字串,要檢查的字串.
                        $conf["search::getMeetConditionsString"]["checkString"]=$path;
                        #可省略參數:
                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                        $conf["search::getMeetConditionsString"]["frontWord"]="/";
                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                        #$conf["tailWord"]="";
                        #參考資料:
                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                        unset($conf["search::getMeetConditionsString"]);

                        #如果檢查失敗
                        if($getMeetConditionsString["status"]=="false"){

                                #設置錯誤識別
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$getMeetConditionsString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有「/」開頭
                        if($getMeetConditionsString["founded"]==="false"){

                                #將 $conf["fileArgu"] 最後面的檔案或目錄名稱剔除
                                #函式說明:
                                #將固定格式的字串分開,並回傳分開的結果。
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$result["error"],錯誤訊息陣列
                                #$result["function"],當前執行的函數名稱.
                                #$result["oriStr"],要分割的原始字串內容
                                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                #$result["dataCounts"],爲總共分成幾段
                                #必填參數:
                                $conf["stringProcess::spiltString"]["stringIn"]=$conf["fileArgu"];#要處理的字串。
                                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                                unset($conf["stringProcess::spiltString"]);

                                #如果分割字串失敗
                                if($spiltString["status"]=="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$spiltString;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #初始化相對路徑為開頭片段""
                                $relativePathPart="/";

                                #剔除最後一段
                                for($i=0;$i<$spiltString["dataCounts"]-1;$i++){

                                        #串接起來
                                        $relativePathPart=$relativePathPart.$spiltString["dataArray"][$i]."/";

                                        }#for end

                                #如果有設定 baseFrom
                                if(isset($conf["baseFrom"])){

                                        #函式說明:
                                        #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                                        #回傳結果:
                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["function"],函數名稱.
                                        #$result["argu"],使用的參數.
                                        #$result["content"],網址,若是在命令列執行,則為"null".
                                        #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                                        #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                                        #必填參數:
                                        #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                                        $conf["fileAccess::getInternetAddressV2"]["address"]=$path;
                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                                        $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                                        $conf["fileAccess::getInternetAddressV2"]["web"]="false";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                                        unset($conf["fileAccess::getInternetAddressV2"]);

                                        ##var_dump(__LINE__." ".print_r($getInternetAddressV2,true));

                                        #如果執行失敗
                                        if($getInternetAddressV2["status"]==="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$getInternetAddressV2;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #取得絕對位置
                                        $path=$getInternetAddressV2["fileSystemAbsoulutePosition"];

                                        #函式說明:
                                        #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                                        #回傳結果:
                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["function"],函數名稱.
                                        #$result["argu"],使用的參數.
                                        #$result["content"],網址,若是在命令列執行,則為"null".
                                        #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                                        #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                                        #必填參數:
                                        #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                                        $conf["fileAccess::getInternetAddressV2"]["address"]=$conf["baseFrom"];
                                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                                        $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                                        #可省略參數:
                                        #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                                        $conf["fileAccess::getInternetAddressV2"]["web"]="false";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                                        unset($conf["fileAccess::getInternetAddressV2"]);

                                        #var_dump(__LINE__." ".print_r($getInternetAddressV2,true));

                                        #如果執行失敗
                                        if($getInternetAddressV2["status"]==="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$getInternetAddressV2;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #取得絕對位置
                                        $conf["baseFrom"]=$getInternetAddressV2["fileSystemAbsoulutePosition"];

                                        #函式說明:
                                        #將多個路徑字串變成相對於當前路徑的相對路徑字串
                                        #回傳結果:
                                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["function"],函數名稱.
                                        #$result["argu"],使用的參數.
                                        #$result["content"],字串陣列,多個轉換好的相對路徑字串.
                                        #必填參數:
                                        #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
                                        $conf["fileAccess::getRelativePath"]["path"]=array($path);
                                        #$conf["fileArgu"],字串,當前路徑.
                                        $conf["fileAccess::getRelativePath"]["fileArgu"]=$conf["baseFrom"]."/name";
                                        #可省略參數:
                                        #$conf["baseFrom"],字串,指定要依據哪個位置為起點的起始位置,預設不指定,代表使用當前路徑.
                                        #$conf["baseFrom"]="";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $getRelativePath=fileAccess::getRelativePath($conf["fileAccess::getRelativePath"]);
                                        unset($conf["fileAccess::getRelativePath"]);

                                        #var_dump(__LINE__." ".print_r($getRelativePath,true));

                                        #如果執行失敗
                                        if($getRelativePath["status"]==="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$getRelativePath;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #取得轉換好的絕對路徑
                                        $relativePathPart=$getRelativePath["content"][0]."/";

                                        #清空path,避免出錯
                                        $path="";

                                        }#if end

                                #轉換成易讀的相對路徑
                                #函式說明:
                                #將檔案目錄的絕對位置中的 "../" 剔除變成直觀的路徑.
                                #回傳的結果:
                                #$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
                                #$result["function"],當前執行的函數.
                                #$result["error"],錯誤訊息陣列.
                                #$result["changedPath"],處理完後回傳的目錄字串.
                                #$result["oriPath"],原始的路徑字串
                                #必填參數:
                                #$conf["dirStr"],字串,要處理的檔案目錄字串.
                                $conf["stringProcess::changeDirByDotDotSolidus"]["dirStr"]=$relativePathPart.$path;
                                $changeDirByDotDotSolidus=stringProcess::changeDirByDotDotSolidus($conf["stringProcess::changeDirByDotDotSolidus"]);
                                unset($conf["stringProcess::changeDirByDotDotSolidus"]);

                                #var_dump($changeDirByDotDotSolidus);

                                #如果轉換失敗
                                if($changeDirByDotDotSolidus["status"]=="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$changeDirByDotDotSolidus;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #轉換為相對路徑
                                #函式說明:
                                #將多個路徑字串變成相對於當前路徑的相對路徑字串
                                #回傳結果:
                                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],函數名稱.
                                #$result["content"],字串陣列,多個轉換好的相對路徑字串.
                                #必填參數:
                                #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
                                $conf["fileAccess::getRelativePath"]["path"]=array($changeDirByDotDotSolidus["changedPath"]);
                                #$conf["fileArgu"],字串,當前路徑.
                                $conf["fileAccess::getRelativePath"]["fileArgu"]=$conf["fileArgu"];
                                $getRelativePath=fileAccess::getRelativePath($conf["fileAccess::getRelativePath"]);
                                unset($conf["fileAccess::getRelativePath"]);

                                #var_dump($getRelativePath);

                                #如果轉換路徑失敗
                                if($getRelativePath["status"]==="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$changeDirByDotDotSolidus;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #取得相對路徑
                                $result["content"][]=$getRelativePath["content"][0];

                                }#if end

                        #反之有「/」開頭
                        else{
                                #函式說明:
                                #移除多個絕對路徑字串開頭相同的部分
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],當前執行的函數名稱.
                                #$result["content"],處理好的的字串內容.
                                #必填參數:
                                #$conf["pathIn"],字串陣列,每個要處理的絕對路徑字串.
                                $conf["fileAccess::delSamePathHead"]["pathIn"]=array($path,$conf["fileArgu"]);
                                $delSamePathHead=fileAccess::delSamePathHead($conf["fileAccess::delSamePathHead"]);
                                unset($conf["fileAccess::delSamePathHead"]);

                                #var_dump($delSamePathHead);

                                #如果移除多個絕對路徑字串開頭相同的部分失敗
                                if($delSamePathHead["status"]==="false"){

                                        #設置錯誤識別
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$delSameHead;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果 $conf["fileArgu"] 剩下空
                                if($delSamePathHead["content"][1]===""){

                                        #檢查 $delSamePathHead[0] 開頭是否為「/」
                                        #函式說明:
                                        #取得符合特定字首與字尾的字串
                                        #回傳結果:
                                        #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                        #$result["returnString"],爲符合字首條件的字串內容。
                                        #必填參數:
                                        #$conf["checkString"],字串,要檢查的字串.
                                        $conf["search::getMeetConditionsString"]["checkString"]=$delSamePathHead["content"][0];
                                        #可省略參數:
                                        #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                        $conf["search::getMeetConditionsString"]["frontWord"]="/";
                                        #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                        #$conf["tailWord"]="";
                                        #參考資料:
                                        #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                        $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                        unset($conf["search::getMeetConditionsString"]);

                                        #如果檢查失敗
                                        if($getMeetConditionsString["status"]=="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$getMeetConditionsString;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果有開頭有「/」
                                        if($getMeetConditionsString["founded"]==="true"){

                                                #函式說明:
                                                #將字串特定關鍵字與其前面的內容剔除
                                                #回傳結果:
                                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                                #$result["error"],錯誤訊息陣列.
                                                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                                #$result["function"],當前執行的函數名稱.
                                                #$result["oriStr"],要處理的原始字串內容.
                                                #$result["content"],處理好的的字串內容.
                                                #必填參數:
                                                $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$delSamePathHead["content"][0];#要處理的字串.
                                                $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="/";#特定字串.
                                                $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                                unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                                #如果 將字串特定關鍵字與其前面的內容剔除 失敗
                                                if($delStrBeforeKeyWord["status"]=="false"){

                                                        #設置錯誤識別
                                                        $result["status"]="false";

                                                        #設置錯誤訊息
                                                        $result["error"]=$delStrBeforeKeyWord;

                                                        #回傳結果
                                                        return $result;

                                                        }#if end

                                                #取得相對位置
                                                $result["content"][]=$delStrBeforeKeyWord["content"];

                                                }#if end

                                        #反之
                                        else{

                                                #取得相對位置
                                                $result["content"][]=$delSamePathHead["content"][0];

                                                }#else end

                                        }#if end

                                #反之剩下的 $conf["fileArgu"] 不為空
                                else{

                                        #檢查 $delSamePathHead["content"][1] 有幾個「/」
                                        #函式說明:
                                        #檢查字串裡面有無指定的關鍵字
                                        #回傳結果:
                                        #$result["status"],"true"代表執行成功,"false"代表執行失敗。
                                        #$result["error"],錯誤訊息
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
                                        #$result["keyWordCount"],找到的關鍵字數量.
                                        #必填參數:
                                        $conf["search::findKeyWord"]["keyWord"]="/";#想要搜尋的關鍵字
                                        $conf["search::findKeyWord"]["string"]=$delSamePathHead["content"][1];#要被搜尋的字串內容
                                        #可省略參數:
                                        #$conf["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
                                        $findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
                                        unset($conf["search::findKeyWord"]);

                                        #如果 檢查字串裡面有無指定的關鍵字 失敗
                                        if($findKeyWord["status"]==="false"){

                                                #設置錯誤識別
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"]=$findKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #有幾個「/」就執行幾次
                                        for($i=0;$i<$findKeyWord["keyWordCount"];$i++){

                                                #在前面加上 "../"
                                                $delSamePathHead["content"][0]="../".$delSamePathHead["content"][0];

                                                }#for end

                                        #取得相對位置
                                        $result["content"][]=$delSamePathHead["content"][0];

                                        }#else end

                                }#else end

                        }#foreach end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getRelativeParh end

        /*
        #函式說明:
        #移除多個絕對路徑字串開頭相同的部分
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],參數.
        #$result["content"],處理好的的字串內容.
        #必填參數:
        #$conf["pathIn"],字串陣列,每個要處理的絕對路徑字串.
        $conf["pathIn"]=array();
        #可省略參數:
        #無
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function delSamePathHead(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argv"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("pathIn");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("fileToRead","output");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("help","help");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkResult["status"] 等於 "fasle"
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkResult["passed"] 等於 "fasle"
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查是否都為絕對路徑
                #函式說明:
                #取得多個符合特定字首與字尾的字串.
                #回傳結果:
                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                #$result["function"],當前執行的函數名稱.
                #$result["returnString"],爲符合字首條件的字串陣列內容。
                #必填參數:
                #$conf["checkString"],陣列字串,要檢查的字串們.
                $conf["search::getMeetConditionsStringMulti"]["checkString"]=$conf["pathIn"];#要檢查的字串陣列
                #可省略參數:
                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                $conf["search::getMeetConditionsStringMulti"]["frontWord"]="/";
                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                #$conf["tailWord"]="";
                #參考資料:
                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                $getMeetConditionsStringMulti=search::getMeetConditionsStringMulti($conf["search::getMeetConditionsStringMulti"]);
                unset($conf["search::getMeetConditionsStringMulti"]);

                #如果檢測是否為絕對路徑失敗
                if($getMeetConditionsStringMulti["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMeetConditionsStringMulti;

                        #增加額外的錯誤訊息
                        $result["error"][]="僅接受絕對路徑字串";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將多個固定格式的字串分開,並回傳分開的結果
                #回傳的參數:
                #$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["spiltString"][$i]["oriStr"],爲第i個字串的原始內容
                #$result["spiltString"][$i]["dataArray"],爲第($i+1)個字串分割後的字串陣列
                #$result["spiltString"][$i]["dataArray"][$j],爲第($i+1)的分割好的字串的第($j+1)段內容
                #$result["spiltString"][$i]["dataCounts"],爲第($i+1)個字串分割後總共分成幾段
                #必填參數:
                #$conf["stringIn"],字串陣列,要處理的字串陣列.
                $conf["stringProcess::spiltMutiString"]["stringIn"]=$conf["pathIn"];
                #$conf["spiltSymbol"],字串,爲要以哪個符號作爲分割.
                $conf["stringProcess::spiltMutiString"]["spiltSymbol"]="/";
                $spiltMutiString=stringProcess::spiltMutiString($conf["stringProcess::spiltMutiString"]);

                #如果分割所有路徑字串失敗
                if($spiltMutiString["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltMutiString;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化暫存每個路徑分割成的段數
                $spiltedPathCount=array();

                #取得每個路徑分割成的段數
                #針對每個 $spiltMutiString["spiltString"]
                for($i=0;$i<count($spiltMutiString["spiltString"]);$i++){

                        $spiltedPathCount[]=$spiltMutiString["spiltString"][$i]["dataCounts"];

                        }#for end

                #取得所有路徑字串分割後的最小數量
                #涵式說明
                #找最小值,結果會回傳最小值
                #回傳的內容
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["key"],最大值原先的key.
                #$result["value"],陣列裏面最小的數值.
                #必填參數:
                $conf["math::getMinValue"]["rawDataArray"]=$spiltedPathCount;#爲原始數據
                $getMinValue=math::getMinValue($conf["math::getMinValue"]);
                unset($conf["math::getMinValue"]);

                #如果取得最小數值失敗
                if($getMinValue["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMinValue;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化暫存每個路徑字串的前面幾個片段是相同的
                $samePartCount=0;

                #var_dump($getMinValue["value"]);

                #依據所有路徑字串分割後的最小數量
                for($j=0;$j<$getMinValue["value"];$j++){

                        #初始化暫存第一個路徑的片段字串
                        $firstPathPart="";

                        #針對每個 $spiltMutiString["spiltString"]
                        for($i=0;$i<count($spiltMutiString["spiltString"]);$i++){

                                #暫存分割的字串
                                $spiltedPath=$spiltMutiString["spiltString"][$i];

                                #如果是第一個路徑
                                if($i==0){

                                        #取得第一個路徑的片段字串
                                        $firstPathPart=$spiltedPath["dataArray"][$j];

                                        }#if end

                                #如果第$i+1個路徑片段不跟第1個路徑的片段字串一樣
                                if($spiltedPath["dataArray"][$j]!=$firstPathPart){

                                        #讓最外層迴圈中止
                                        $getMinValue["value"]=-1;

                                        #跳出迴圈
                                        break;

                                        }#if end

                                }#for end

                        #代表每個路徑字串的第$j段是一樣的.
                        $samePartCount=$j;

                        }#for end

                #var_dump($samePartCount);

                #依據每個路徑
                for($i=0;$i<count($spiltMutiString["spiltString"]);$i++){

                        #初始化儲存第$i+1個處理好的路徑字串
                        $result["content"][$i]="";

                        #依據 $samePartCount 與 路徑的段數
                        for($j=$samePartCount;$j<$spiltMutiString["spiltString"][$i]["dataCounts"];$j++){

                                #如果不是第一段
                                if($j!=$samePartCount){

                                        #組裝每個路徑片段
                                        $result["content"][$i]=$result["content"][$i]."/".$spiltMutiString["spiltString"][$i]["dataArray"][$j];

                                        }#if end

                                #反之為第一段
                                else{

                                        #組裝每個路徑片段
                                        $result["content"][$i]=$result["content"][$i].$spiltMutiString["spiltString"][$i]["dataArray"][$j];

                                        }#else end

                                }#for end

                        }#for end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function delSamePathHead end

        /*
        #函式說明:
        #於本套件位置底下的tmp資料夾下建立與回傳暫存檔案名稱路徑
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],暫存檔案的路徑與名稱.
        #$result["fileName"],暫存檔案的名稱.
        #$result["path"],暫存檔案的路徑.
        #必填參數:
        #無.
        #可省略參數:
        #$conf["content"],陣列,每行檔案的內容,預設為空陣列,不寫入任何資料.
        #$conf["contant"]=array();
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function createTempFile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],執行不正常結束的錯訊息陣列.
                #$result["simpleError"],簡單表示的錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可省略參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                #$conf["mustBeFilledVariableName"]=array();
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
                #$conf["mustBeFilledVariableType"]=array();
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("content");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(array());
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
                #$conf["disallowAllSkipableVarNotExist"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #備註:
                #無.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果執行失敗
                if($checkArguments["status"]==="false"){

                        #設置執行異常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行異常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得相對於當前路徑的  tmp 目錄.
                exec("cd ".pathinfo(__FILE__)["dirname"]."/../../../var/qbpwcf/tmp;pwd;",$output,$status);

                #如果執行失敗
                if($status!==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="取得暫存目錄失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #設置預設的暫存目錄
                $defaultTmpDir=$output[0];

                #取得暫存檔案的路徑與名稱
                $result["content"]=tempnam($defaultTmpDir,"qbpwcf_tmpfile_");

                #如果產生的暫存檔案位置異常
                #參考資料:
                #https://www.php.net/manual/en/function.tempnam.php
                if(strpos("/tmp/",$result["content"])===0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="於暫存目錄建立檔案失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將字串特定關鍵字與其前面的內容剔除
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["warning"],警告訊息鎮列.
                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["oriStr"],要處理的原始字串內容.
                #$result["content"],處理好的的字串內容.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["stringPorcess::delStrBeforeKeyWord"]["stringIn"]=$result["content"];
                #$conf["keyWord"],字串,特定字串.
                $conf["stringPorcess::delStrBeforeKeyWord"]["keyWord"]=$defaultTmpDir."/";
                #可省略參數:
                #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
                $conf["stringPorcess::delStrBeforeKeyWord"]["recursive"]="true";
                #$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
                #$conf["lastResult"]=$delStrBeforeKeyWord;
                #參考資料:
                #無.
                #備註:
                #無.
                $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringPorcess::delStrBeforeKeyWord"]);
                unset($conf["stringPorcess::delStrBeforeKeyWord"]);

                #如果執行失敗
                if($delStrBeforeKeyWord["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$delStrBeforeKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #如果應該要存在的路徑關鍵字不在
                if($delStrBeforeKeyWord["founded"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$delStrBeforeKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #取得檔案名稱
                $result["fileName"]=$delStrBeforeKeyWord["content"];

                #函式說明:
                #將字串特定關鍵字與其後面的內容剔除
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["warning"],警告訊息鎮列.
                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要處理的原始字串內容.
                #$result["content"],處理好的的字串內容.
                #$result["argu"],使用的參數.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$result["content"];
                #$conf["keyWord"],字串,特定字串.
                $conf["stringProcess::delStrAfterKeyWord"]["keyWord"]=$result["fileName"];
                #可省略參數:
                #$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
                #$conf["deleteLastRepeatedOne"]="";
                #參考資料:
                #無.
                #備註:
                #無.
                $delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
                unset($conf["stringProcess::delStrAfterKeyWord"]);

                #如果執行失敗
                if($delStrAfterKeyWord["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$delStrAfterKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #如果應該要存在的檔案名稱關鍵字不在
                if($delStrAfterKeyWord["founded"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$delStrAfterKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #取得路徑
                $result["path"]=$delStrAfterKeyWord["content"];

                #如果有內容要寫入
                if(!empty($conf["content"])){

                        #函式說明:
                        #將多行字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行函數的名稱.
                        #必填參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱
                        $conf["fileAccess::writeMultiLine"]["fileName"]=$result["content"];
                        #$conf["inputString"],字串陣列,爲要寫入到 $conf["fileName"] 裏面的內容. $conf["inputString"][$i] 代表第 $i+1 行。
                        $conf["fileAccess::writeMultiLine"]["inputString"]=$conf["content"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeMultiLine"]["fileArgu"]=__FILE__;
                        #可省略參數:
                        #$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $writeMultiLine=fileAccess::writeMultiLine($conf["fileAccess::writeMultiLine"]);
                        unset($conf["fileAccess::writeMultiLine"]);

                        #如果執行失敗
                        if($writeMultiLine["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$writeMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function createTempFile end

        /*
        #函式說明:
        #複製檔案、資料夾,只要符合權限就會執行並覆蓋既有內容.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函式名稱.
        #$result["content"],複製好的檔案路徑與名稱.
        #必填參數:
        #$conf["file"],字串,檔案的位置與名稱.
        $conf["file"]="";
        #$conf["to"],字串,檔案要複製到哪裡.
        $conf["to"]="";
        #$conf["fileArgu"],字串,__FILE__的內容,預設為當前檔案的位置.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #等同於cmd::cp的應用.
        */
        public static function cp(&$conf){
        
                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函式名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函式".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函式「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","to","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","cmdOnly");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array($_SERVER["LOGNAME"],null,"true");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果參數檢查失敗
                if($checkArguments["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果參數檢查不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end
                        
                #函式說明:
                #複製檔案、資料夾,只要符合權限就會執行並覆蓋既有內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["content"],複製好的檔案路徑與名稱.
                #必填參數:
                #$conf["file"],字串,檔案的位置與名稱.
                $conf["cmd::cp"]["file"]=$conf["file"];
                #$conf["to"],字串,檔案要複製到哪裡.
                $conf["cmd::cp"]["to"]=$conf["to"];
                #$conf["fileArgu"],字串,__FILE__的內容,預設為當前檔案的位置.
                $conf["cmd::cp"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["cmdOnly"],字串,是否要只允許在cmd環境下運行,預設為"true",代表是;"false"代表沒有限制.
                $conf["cmd::cp"]["cmdOnly"]="false";
                #$conf["username"],字串,要以哪個使用者來執行,預設為執行該php程式的使用者.
                #$conf["username"]="";
                #$conf["password"],字串,使用者對應的密碼,預設不使用.
                #$conf["password"]="";
                #參考資料:
                #無.
                #備註:
                #無.
                $cp=cmd::cp($conf["cmd::cp"]);
                unset($conf["cmd::cp"]);
                
                #如果執行異常
                if($cp["status"]==="false"){
                
                        #設置執行不正常
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$cp;

                        #回傳結果
                        return $result;
                
                        }#if end
                        
                #設置要回傳的 content
                $result["content"]=$cp["content"];
                        
                #設置執行正常
                $result["status"]="true";
                
                #回傳結果
                return $result;
        
                }#function cp end

        /*
        #函式說明:
        #分割檔案,分割出來的檔案名稱編號為aa, ab ac...ba, bb, bc...,zx, zy, zz的順序.
        #回傳結果:
        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["cmd"],執行的指令.
        #$result["content"],執行指令回傳的結果.
        #必填參數:
        #$conf["file"],字串,要分割的檔案名稱.
        $conf["file"]="";
        #可省略參數:
        #$conf["splitNameHead"],字串,分割成檔案的名稱開頭,預設為 $conf["file"]."-" .
        #$conf["splitNameHead"]="";
        #$conf["partSize"],字串,分割檔的大小為多少?可以為XMB,XGB,XKB,可參見split指令的說明,預設為50MB.
        #$conf["partSize"]="";
        #參考資料:
        #無.
        #備註:
        #需要有split指令
        */
        public static function split(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #判斷當前環境為web還是cmd
                #回傳結果:
                #$result,"web"或"cmd"
                if(csInformation::getEnv()==="web"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="函數 ".$result["function"]." 僅能在命令列環境下運行!";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("splitNameHead","partSize");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]",若後面需要加上內容,則可以再補上\",後面再補上要串接的內容.
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("\$conf[\"file\"]\"-","50MB");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #建議:
                #增加可省略參數全部不能為空字串或空陣列的參數功能.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要分割的檔案存在
                if(file_exists($conf["file"])){

                        #取得執行的指令
                        $result["cmd"]="split -b ".$conf["partSize"]." '".$conf["file"]."' '".$conf["splitNameHead"]."'";

                        #執行還原的指令
                        exec($result["cmd"],$output,$status);

                        #取得執行後的輸出
                        $result["content"]=$output;

                        }#if end

                #反之
                else{

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="要分割的檔案「".$conf["file"]."」不存在";

                        #回傳結果
                        return $result;

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function split end

        /*
        #函式說明:
        #合併檔案,檔案編號為aa, ab ac...ba, bb, bc...,zx, zy, zz的順序.
        #回傳結果:
        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["cmd"],執行的指令.
        #$result["content"],執行指令回傳的結果.
        #必填參數:
        #$conf["filePartHead"],字串,分割檔案的名稱開頭.
        $conf["filePartHead"]="";
        #$conf["oriFileName"],字串,合併後的檔案名稱.
        $conf["oriFileName"]="";
        #可省略參數:
        #無
        #參考資料:
        #無.
        #備註:
        #需要有cat指令.
        #僅能在命令列執行.
        */
        public static function merge(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #判斷當前環境為web還是cmd
                #回傳結果:
                #$result,"web"或"cmd"
                if(csInformation::getEnv()==="web"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="函數 ".$result["function"]." 僅能在命令列環境下運行!";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("filePartHead","oriFileName");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #建議:
                #增加可省略參數全部不能為空字串或空陣列的參數功能.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #定義編號
                $charArray=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","v","u","w","x","y","z");

                #定義分割檔案的前置字串
                $filePartHead=$conf["filePartHead"];

                #要合併成的檔案名稱
                $oriFileName=$conf["oriFileName"];

                #初始化要執行合併的語法
                $restoreCmd="cat ";

                #有幾個編號就執行幾次
                for($i=0;$i<count($charArray);$i++){

                        #有幾個編號就執行幾次
                        for($j=0;$j<count($charArray);$j++){

                                #如果該分割檔存在
                                if(file_exists($filePartHead.$charArray[$i].$charArray[$j])){

                                        #串接要還原的分割檔
                                        $restoreCmd=$restoreCmd." '".$filePartHead.$charArray[$i].$charArray[$j]."'";

                                        }#if end

                                #反之
                                else{

                                        #如果是第一個分割檔就找不到
                                        if($i===0 && $j===0){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置錯誤訊息
                                                $result["error"][]="找不到第一個分割檔「".$filePartHead.$charArray[$i].$charArray[$j]."」";

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #串接要還原成的檔案名稱
                                        $restoreCmd=$restoreCmd." > '".$oriFileName."'";

                                        #取得執行的指令
                                        $result["cmd"]=$restoreCmd;

                                        #執行還原的指令
                                        exec($restoreCmd,$output,$status);

                                        #取得執行後的輸出
                                        $result["content"]=$output;

                                        #結束回圈
                                        break 2;

                                        }#else end

                                }#for end

                        }#for end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function merge end

        /*
        #函式說明:
        #取得檔案的部分內容
        #回傳結果:
        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["cmd"],執行的指令.
        #$result["content"],取得的檔案內容.
        #$result["length"],取得的內容長度.
        #$result["EOF"],識別是否已經到檔案結尾,"true"代表是,"false"代表不是.
        #$result["mimeType"],檔案的 mime type.
        #必填參數:
        #$conf["file"],字串,檔案的路徑與名稱.
        $conf["file"]="";
        #$conf["fileArgu"],字串,__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["bytes"],整數字串,要讀取多少bytes.
        $conf["bytes"]="";
        #$conf["startIndex"],要從哪個bytes位置開始,起始點為0.
        $conf["startIndex"]="";
        #可省略參數:
        #無
        #參考資料:
        #無.
        #備註:
        #無
        */
        public static function getFilePart(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址,若"web"參數為"true",才會有該內容.
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["file"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=__FILE__;
                #可省略參數:
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
                #$conf["web"]="true";
                #參考資料:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                #$result["varName"][$i]結果未實作
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果執行失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檔案不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #取得mimetype
                $mimetype=mime_content_type($conf["file"]);

                #取得檔案的 mime type
                $result["mimeType"]=$mimetype;

                #透過 dd 指令,取得部分內容.
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #$result["escape"],陣列,儲存重新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu")與兩者組合的一維陣列(key為"array").
                #必填參數:
                #$conf["command"],字串,要執行的指令.
                $conf["external::callShell"]["command"]="dd";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("if=".$conf["file"],"bs=".$conf["bytes"],"count=1","status=none");
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                #$conf["escapeshellarg"]="false";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #取得結果
                $result["content"]=$callShell["output"][0];

                #取得內容長度
                $result["length"]=strlen($result["content"]);

                #預設尚未到檔案結尾
                $result["EOF"]="false";

                #如果取得的內容長度小於預期
                if($result["length"]<$conf["bytes"]){

                        #設置已經到檔案結尾了
                        $result["EOF"]="true";

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getFilePart end

        /*
        #函式說明:
        #取得節點的資訊.
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],檔案資訊陣列.
        #$result["content"]["is_folder"],是否為目錄,"true"代表是,"false"代表不是.
        #$result["content"]["ownerPerm"],檔案擁有者權限資訊.
        #$result["content"]["groupPerm"],檔案歸屬群組權限資訊.
        #$result["content"]["otherPerm"],檔案對於其他身份使用者的權限資訊.
        #$result["content"]["subElementCount"],目錄底下的檔案目錄數量.
        #$result["content"]["ownerName"],檔案擁有着資訊.
        #$result["content"]["groupName"],檔案所屬擁有着資訊.
        #$result["content"]["size"],檔案大小.
        #$result["content"]["modifyDate"],檔案變更年月日.
        #$result["content"]["modifyTime"],檔案變更時分秒.
        #$result["content"]["modifyTimeFloat"],檔案變更時間秒的float數值.
        #$result["content"]["timezone"],檔案變更時間的時區與UTC的差距.
        #必填參數:
        #$conf["fileArgu"],字串,當前檔案的位置亦即__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["file"],字串,要查看擁有者資訊的檔案.
        $conf["file"]="";
        #可省略參數:
        #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
        #$conf["web"]="true";
        #參考資料:
        #fileowner=>http://php.net/manual/en/function.fileowner.php
        #posix_getpwuid=>http://php.net/manual/en/function.posix-getpwuid.php
        #備註:
        #無.
        */
        public static function fileInfo(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["ileAccess::checkArguments"]["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["argu"],使用的參數.
                #$result["content"],網址,若是在命令列執行,則為"null".
                #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「document_root」目錄開始的路徑.
                #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                $conf["fileAccess::getInternetAddressV2"]["address"]=$conf["file"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddressV2"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["web"],字串,"true"代表檔案是放在web環境;"false"是代表在檔案系統環境,預設為"true".
                $conf["fileAccess::getInternetAddressV2"]["web"]=$conf["web"];
                #備註:
                #建構中,fileSystemRelativePosition尚未實作,檢查參數尚未實作.
                $getInternetAddressV2=fileAccess::getInternetAddressV2($conf["fileAccess::getInternetAddressV2"]);
                unset($conf["fileAccess::getInternetAddressV2"]);

                #如果取得位置失敗
                if($getInternetAddressV2["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$getInternetAddressV2;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($getInternetAddressV2["fileSystemAbsoulutePosition"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #$conf["web"],檔案是否位於網站上"true",若是在檔案系統則為"false",預設為"true".
                $conf["fileAccess::checkMultiFileExist"]["web"]="false";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查檔案存在失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檔案不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #透過ls指令取得檔案的資訊
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫村檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid
                #必填的參數
                #$conf["command"],字串,要執行的指令
                $conf["external::callShell"]["command"]="ls";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-l","--full-time","-d",$conf["file"]);
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                $conf["external::callShell"]["arguIsAddr"]=array("false","false","false","false");
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,與$conf["username"]搭配的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #解析檔案資訊
                #-rwxrwx--x. 1 apache apache 65K 2017-04-16 22:53:19.044545806 +0800 fileAccessT.php

                #取得權限資訊 -rwxrwx--x
                $perm=substr($callShell["output"][0],0,strpos($callShell["output"][0],'.'));

                #如果是目錄
                if(substr($perm,0,1)==="d"){

                        #設定為目錄
                        $result["content"]["is_folder"]="true";

                        }#if end

                #反之
                else{

                        #設定不為目錄
                        $result["content"]["is_folder"]="false";

                        }#else end

                #解析檔案擁有者權限資訊
                $result["content"]["ownerPerm"]=substr($perm,1,3);

                #如果檔案擁有者名稱為空
                if(empty($result["content"]["ownerPerm"])){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #解析檔案歸屬群組權限資訊
                $result["content"]["groupPerm"]=substr($perm,4,3);

                #解析檔案對於其他身份使用者的權限資訊
                $result["content"]["otherPerm"]=substr($perm,7,3);

                #取得目錄底下的檔案目錄數量起始點
                $subElementStartPos=strpos($callShell["output"][0],' ');

                #取得目錄底下的檔案目錄數量結束點
                $subElementEndPos=strpos($callShell["output"][0],' ',$subElementStartPos+1);

                #取得目錄底下的檔案目錄數量
                $result["content"]["subElementCount"]=substr($callShell["output"][0],$subElementStartPos,$subElementEndPos-$subElementStartPos);

                #取得檔案擁有着資訊的起點
                $ownerNameStrPos=strpos($callShell["output"][0],' ',$subElementEndPos)+1;

                #取得檔案擁有着資訊的結束點
                $ownerNameEndPos=strpos($callShell["output"][0],' ',$ownerNameStrPos+1);

                #取得檔案擁有着資訊
                $result["content"]["ownerName"]=substr($callShell["output"][0],$ownerNameStrPos,$ownerNameEndPos-$ownerNameStrPos);

                #取取得檔案群組擁有者資訊的起點
                $groupNameStrPos=strpos($callShell["output"][0],' ',$ownerNameEndPos)+1;

                #取得檔案群組擁有者資訊的結束點
                $groupNameEndPos=strpos($callShell["output"][0],' ',$groupNameStrPos);

                #取得檔案群組擁有者資訊
                $result["content"]["groupName"]=substr($callShell["output"][0],$groupNameStrPos,$groupNameEndPos-$groupNameStrPos);

                #取得檔案大小的起點
                $sizeStrPos=strpos($callShell["output"][0],' ',$groupNameEndPos)+1;

                #取得檔案大小的結束點
                $sizeEndPos=strpos($callShell["output"][0],' ',$sizeStrPos);

                #取得檔案大小
                $result["content"]["size"]=substr($callShell["output"][0],$sizeStrPos,$sizeEndPos-$sizeStrPos);

                #取得檔案變更年月日的起點
                $modifyDateStrPos=strpos($callShell["output"][0],' ',$sizeEndPos)+1;

                #取得檔案變更年月日的結束點
                $modifyDateEndPos=strpos($callShell["output"][0],' ',$modifyDateStrPos);

                #取得檔案變更年月日
                $result["content"]["modifyDate"]=substr($callShell["output"][0],$modifyDateStrPos,$modifyDateEndPos-$modifyDateStrPos);

                #取得檔案變更時分秒的起點
                $modifyTimeStrPos=strpos($callShell["output"][0],' ',$modifyDateEndPos)+1;

                #取得檔案變更時分秒的結束點
                $modifyTimeEndPos=strpos($callShell["output"][0],'.',$modifyTimeStrPos);

                #取得檔案變更時分秒
                $result["content"]["modifyTime"]=substr($callShell["output"][0],$modifyTimeStrPos,$modifyTimeEndPos-$modifyTimeStrPos);

                #取得檔版變更時間秒的float數值起點
                $modifyTimeFloatStrPos=strpos($callShell["output"][0],'.',$modifyTimeEndPos)+1;

                #取得檔版變更時間秒的float數值結束點
                $modifyTimeFloatEndPos=strpos($callShell["output"][0],' ',$modifyTimeFloatStrPos);

                #取得檔版變更時間秒的float數值
                $result["content"]["modifyTimeFloat"]=substr($callShell["output"][0],$modifyTimeFloatStrPos,$modifyTimeFloatEndPos-$modifyTimeFloatStrPos);

                #取得時區起始點
                $timezoneStrPos=strpos($callShell["output"][0],' ',$modifyTimeFloatEndPos)+1;

                #取得時區結束點
                $timezoneEndPos=strpos($callShell["output"][0],' ',$timezoneStrPos)+1;

                #取得檔案變更時間的時區與UTC的差距.
                $result["content"]["timezone"]=substr($callShell["output"][0],$timezoneStrPos,$timezoneEndPos-$timezoneStrPos);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function fileInfo end

        /*
        #函式說明:
        #依據函數getListTree執行的結果,將其底下與其子目錄底下的特定檔案內容依據目錄層級輸出成html檔案
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],html檔案輸出的位置與名稱.
        #必填參數:
        #$conf["getListTree"],陣列變數,函數getListTree執行的結果.
        $conf["getListTree"]=$getListTree;
        #可省略參數:
        #$conf["fileToRead"],字串,要讀取的檔案名稱為何?預設為"help".
        #$conf["fileToRead"]="help";
        #$conf["output"],字串,輸出的網頁檔案位置與名稱,副檔名html會自動補上,預設為"help".
        #$conf["output"]="help.html";
        #參考資料:
        #無.
        #備註:
        #建構中...
        */
        public static function createHelpFile($conf){

                #初始化要回傳的結果
                $result=array();

                #設置當其函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("getListTree");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("fileToRead","output");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("help","help");
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("leaderWordArray","leaderWordOptionCountArray");
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果 $checkResult["status"] 等於 "fasle"
                if($checkResult["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $checkResult["passed"] 等於 "fasle"
                if($checkResult["passed"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkResult;

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["getListTree"]["status"] 不存在
                if(!isset($conf["getListTree"]["status"])){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"][]="getListTree參數必須為getListTree函數執行後的結果";

                        #回傳結果
                        return $result;

                        }#if end

                #如果 $conf["getListTree"] 執行失敗
                if($conf["getListTree"]["status"]=="false"){

                        #設置錯誤識別
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$conf["getListTree"];

                        #回傳結果
                        return $result;

                        }#if end

                #如果有目錄檔案
                if(isset($conf["getListTree"]["content"])){



                        }#if end

                }#function createHelpFile end

        /*
        #函式說明:
        #嵌入pdf檔案到網頁上面
        #回傳結果:
        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],函數名稱.
        #$result["content"],嵌入pdf檔案的語法
        #必填參數:
        #$conf["fileArgu"],字串,當前檔案的位置亦即__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["file"],字串,pdf檔案位置.
        $conf["file"]="";
        #可省略參數:
        #$conf["type"],字串,要用"iframe"還是"object"的方式嵌入pdf檔案,預設為"iframe".
        #$conf["type"]="iframe";
        #參考資料:
        #嵌入pdf到網頁=>https://stackoverflow.com/questions/14690000/embed-a-pdf-in-html5
        #備註:
        #如果是網址就會出錯.
        */
        public static function embedPdf(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("function");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("width","height");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("type");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("iframe");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #建議:
                #增加可省略參數全部不能為空字串或空陣列的參數功能.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果參數檢查不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱。
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["file"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                $conf["fileAccess::checkMultiFileExist"]["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查檔案是否存在失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檔案不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #產生 base64 的 pdf 編碼字串
                $base64pdf=base64_encode(file_get_contents($conf["file"]));

                #產生 base64 的 pdf 編碼字串 data
                $base64pdfData="data:application/pdf;base64,".$base64pdf;

                #判斷要用哪種方式嵌入pdf
                switch($conf["type"]){

                        #如果是用 object 方式
                        case "object":

                                #產生嵌入的語法
                                $embedSyntax="<object style=\"width:100%;height:100%;\" data=\"".$base64pdfData."\"></object>";

                                #取得語法
                                $result["content"]=&$embedSyntax;

                                #跳出 switch
                                break;

                        #預設
                        default:

                                #產生嵌入的語法
                                $embedSyntax="<iframe style=\"width:100%;height:100%;\" src=\"".$base64pdfData."\"></iframe>";

                                #取得語法
                                $result["content"]=&$embedSyntax;

                        }#switch end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function embedPdf end

        /*
        #函式說明:
        #用linux unzip去解壓縮zip檔案
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"]["each"],每個檔案的資訊.
        #$result["content"]["each"]["Length"][$i],各別檔案目錄的原始長度.
        #$result["content"]["each"]["Method"][$i],各別檔案目錄的壓縮方法.
        #$result["content"]["each"]["Size"][$i],各別檔案目錄的壓縮後長度.
        #$result["content"]["each"]["Cmpr"][$i],各別檔案目錄的壓縮率.
        #$result["content"]["each"]["Date"][$i],各別檔案目錄的最後修改日期.
        #$result["content"]["each"]["Time"][$i],各別檔案目錄的最後修改時間.
        #$result["content"]["each"]["CRC-32"][$i],各別檔案目錄的CRC-32檢查碼.
        #$result["content"]["each"]["Name"][$i],各別檔案目錄的路徑與名稱.
        #$result["content"]["total"],統整的資訊.
        #$result["content"]["Length"],總共的檔案長度.
        #$result["content"]["Size"],壓縮後的檔案長度.
        #$result["content"]["Cmpr"],平均壓縮率.
        #$result["content"]["count"],壓縮檔裡面總共的檔案跟目錄數目.
        #必填參數;
        #$conf["zip"],字串,要解壓縮的zip檔案.
        $conf["zip"]="";
        #$conf["fileArgu"],字串,__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["extract"],字串,要解壓縮到那個路徑,預設為當前位置"./".
        #$conf["extract"]="";
        #備註:
        #建議加上特定邊碼的支援例如、單
        */
        public static function unzip(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("zip","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                $conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("zip","fileArgu");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("extract");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("extract");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("./");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查要解壓縮的檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["zip"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查檔案是否存在失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要解壓縮的檔案不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫村檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid
                #必填參數:
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="unzip";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-d",$conf["extract"],"-o","-q",$conf["zip"]);
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,與$conf["username"]搭配的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行cmd失敗
                if($callShell["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫村檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid
                #必填的參數
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="unzip";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-v",$conf["zip"]);
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,與$conf["username"]搭配的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行cmd失敗
                if($callShell["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #取得輸出的內容陣列
                $unzipInfo=$callShell["output"];

                /*

                 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
                --------  ------  ------- ---- ---------- ----- --------  ----
                 4194304  Defl:X  2507269  40% 05-04-2002 17:30 9386a740  PS2 Bios 30004R V6 Pal.bin
                           4  Defl:X        6 -50% 05-15-2005 06:45 054a6ec2  PS2 Bios 30004R V6 Pal.MEC
                        1024  Defl:X       22  98% 06-25-2005 14:55 3493bb06  PS2 Bios 30004R V6 Pal.NVM
                  199680  Defl:X    70524  65% 06-02-2004 16:50 2c3bcd32  rom1.bin
                 4194304  Defl:X  2637496  37% 02-20-2005 21:12 6f8e3c29  SCPH-70004_BIOS_V12_PAL_200.BIN
                 3145728  Defl:X  3138427   0% 02-20-2005 21:12 bf3cbc65  SCPH-70004_BIOS_V12_PAL_200.EROM
                        1024  Defl:X      706  31% 02-20-2005 21:12 a8d51ead  SCPH-70004_BIOS_V12_PAL_200.NVM
                  524288  Defl:X   149924  71% 02-20-2005 21:12 0e8797c0  SCPH-70004_BIOS_V12_PAL_200.ROM1
                  524288  Defl:X   149924  71% 02-20-2005 21:12 0e8797c0  SCPH-70004_BIOS_V12_PAL_200.ROM2
                 4194304  Defl:X  2213105  47% 10-18-2000 06:06 b7ef81a9  scph10000.bin
                        1024  Defl:X       11  99% 01-01-2005 00:42 efb5af2e  scph10000.NVM
                 4194304  Defl:X  2511182  40% 06-27-2003 10:51 a19e0bf5  scph39001.bin
                           4  Defl:X        6 -50% 05-14-2005 16:00 054a6ec2  scph39001.MEC
                        1024  Defl:X       20  98% 05-31-2005 16:09 e14a6cd6  scph39001.NVM
                --------          -------  ---                            -------
                21175304         13378622  37%                            14 files

                */

                #取得行數
                $lineCount=count($unzipInfo);

                #取得標題
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$unzipInfo[1];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割字串失敗
                if($spiltString["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有分割用的關鍵字
                if($spiltString["found"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #取得標題欄位
                $titles=$spiltString["dataArray"];

                #取得標題欄位數目
                $titleCount=$spiltString["dataCounts"];

                #針對每列輸出
                for($i=3;$i<$lineCount-2;$i++){

                        #取得各欄位的內容
                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                        #必填參數:
                        $conf["stringProcess::spiltString"]["stringIn"]=$unzipInfo[$i];#要處理的字串。
                        $conf["stringProcess::spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
                        #可省略參數:
                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果分割字串失敗
                        if($spiltString["status"]==="false"){

                                #設置執行不正常
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有分割用的關鍵字
                        if($spiltString["found"]==="false"){

                                #設置執行不正常
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得各欄位的內容
                        $cols=$spiltString["dataArray"];

                        #取得欄位的數目
                        $colsCount=$spiltString["dataCounts"];

                        #如果實際抓出的內容欄位數量大於標題欄位數量,代表檔案/目錄名稱含有空格
                        if($colsCount>$titleCount){

                                #新的檔案名稱
                                $newFileName="";

                                #針對每個多出的欄位
                                for($j=$titleCount;$j<$colsCount;$j++){

                                        #串接屬於檔案名稱的部分
                                        $newFileName=$newFileName.$cols[$j];

                                        #如果不是最後一個項目
                                        if($j!==$colsCount-1){

                                                #增加空格
                                                $newFileName=$newFileName." ";

                                                }#if end

                                        }#for end

                                #取代成對的檔案名稱
                                $cols[$titleCount-1]=$newFileName;

                                }#if end

                        #針對每個欄位
                        for($j=0;$j<$titleCount;$j++){

                                #取得欄位內容
                                $result["content"]["each"][$titles[$j]][]=$cols[$j];

                                }#for end

                        }#for end

                #取得 total 的輸出內容
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$unzipInfo[$lineCount-1];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果分割字串失敗
                if($spiltString["status"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有分割用的關鍵字
                if($spiltString["found"]==="false"){

                        #設置執行不正常
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #取得各欄位的內容
                $cols=$spiltString["dataArray"];

                #取得總共的檔案長度
                $result["content"]["total"][$titles[0]]=$cols[0];

                #取得壓縮時的總共檔案長度
                $result["content"]["total"][$titles[2]]=$cols[1];

                #取得壓縮時的總共檔案長度
                $result["content"]["total"][$titles[3]]=$cols[2];

                #取得解壓縮出了多少檔案跟目錄
                $result["content"]["total"]["count"]=explode(" ",$cols[3])[0];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function unzip end

        /*
        #函式說明:
        #接收Range: bytes=0-499格式的header, 輸出檔案的片段或完整檔案.
        #回傳結果:
        #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函式名稱.
        #必填參數:
        #$conf["filePath"],字串,檔案的路徑.
        $conf["filePath"]="";
        #可省略參數:
        #$conf["fileName"],字串,顯示的檔案名稱,預設為basename($conf["filePath"]);
        #$conf["fileName"]="";
        #參考資料:
        #https://gdfan1114.wordpress.com/2015/01/14/php-%E5%AF%A6%E4%BD%9C%E6%94%AF%E6%8F%B4-http-%E7%BA%8C%E5%82%B3%E5%8A%9F%E8%83%BD/
        #http://php.net/manual/en/function.filemtime.php
        #http://php.net/manual/en/function.connection-status.php
        #http://php.net/manual/en/function.fread.php
        #備註:
        #請勿在運行該函式前印出任何內容,這是要給用戶端接收的內容.
        */
        public static function partDownload(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("filePath");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("fileName");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("fileName");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有設置 $conf["fileName"]
                if(!isset($conf["fileName"])){

                        #取得檔案名稱
                        $filename=basename($conf["filePath"]);

                        }#if end

                #反之
                else{

                        #取得設定好的檔案名稱
                        $filename=&$conf["fileName"];

                        }#else end

                #取得檔案路徑
                $location=$conf["filePath"];

                #取得mimetype
                $mimetype=mime_content_type($location);

                #如果檔案不存在
                if(!file_exists($location)){

                        #提示找不到檔案
                        header("HTTP/1.1 404 Not Found");

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"][]="檔案 ".$location." 不存在.";

                        #回傳結果
                        return $result;

                        }#if end

                #取得檔案的bytes長度
                $size  = filesize($location);

                #取得檔案的最後變更日期
                $time  = date('r', filemtime($location));

                #讀取檔案的2元碼內容
                $fm = @fopen($location, 'rb');

                #如果開啟檔案失敗
                if(!$fm){

                        #提示錯誤
                        header("HTTP/1.1 505 Internal server error");

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"][]="開啟檔案 ".$location." 失敗.";

                        #回傳結果
                        return $result;

                        }#if end

                #初始化要提供的bytes長度起始點
                $begin  = 0;

                #初始化要提供的bytes長度結束點
                $end  = $size - 1;

                #如果有接收到 'HTTP_RANGE' 的 header 訊息
                if(isset($_SERVER['HTTP_RANGE'])){

                        #接收到的範例
                        #Range: bytes=0-499

                        #取得要求的bytes位置範圍
                        sscanf($_SERVER['HTTP_RANGE'], "bytes=%d-%d",$begin,$end);

                        #如果 $begin 或 $end  有缺
                        if(!isset($begin) || !isset($end)){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"][]="header \"Range\" 的數值格式為 \"bytes=0-499\"";

                                #回傳結果
                                return $result;

                                }#if end

                        #如果 $begin 沒有小於等於 $end
                        if(!($begin<=$end)){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"][]="header \"Range\" 的數值格式為 \"bytes=0-499\"";

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #提示 200 ok
                header('HTTP/1.1 200 OK');

                #提示 mimetype
                header("Content-Type: $mimetype");

                #要先驗證cache中的資料,取得的內容放在快取的時間為0
                header('Cache-Control: public, must-revalidate, max-age=0');

                #提示不要cache
                header('Pragma: no-cache');

                #提示接收的 Ranges 單位為 bytes
                header('Accept-Ranges: bytes');

                #數值傳輸的內容長度為多少
                header('Content-Length:' . (($end - $begin) + 1));

                #提示內容為檔案的哪邊到哪邊與總共的長度
                header("Content-Range: bytes $begin-$end/$size");

                #提示檔案的名稱
                header("Content-Disposition: inline; filename=$filename");

                #提示用2元碼傳輸
                header("Content-Transfer-Encoding: binary");

                #提示檔案最後變更日期
                header("Last-Modified: $time");

                #初始化當前位置
                $cur  = $begin;

                #指定讀取的起始點為 $begin
                fseek($fm, $begin, 0);

                #讀取內容, 若不是檔案結尾, 且當前位置($cur)小於等於 本次要提供的長度結尾($end), 且connection_status為0
                while(!feof($fm) && $cur<=$end && (connection_status()===0)){

                        #一次最多印出 1024*16bytes 的長度,若剩下長度不足則只印出剩下的長度.
                        echo fread($fm, min(1024 * 16, ($end - $cur) + 1));

                        #更改位置
                        $cur += 1024 * 16;

                        }#while end

                }#function partDownload end

        /*
        #函式說明:
        #尋找檔案.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["warning"],警告訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["found"],是否有找到可以轉換的檔案,"true"代表有;"false"代表沒有.
        #$result["content"],找到的檔案陣列.
        #必填參數:
        #$conf["keyWord"],字串,要搜尋的檔案關鍵字,可用"*"符號,例如"*.qcow2",就代表檔案名成為"qcow2"結尾的檔案.
        $conf["keyWord"]="";
        #$conf["path"],字串陣列,虛擬硬碟檔案的搜尋路徑,預設為當前路徑.
        $conf["path"]=array();
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #參考資料:
        #http://php.net/manual/en/function.glob.php
        #備註:
        #無.
        */
        public static function findFile(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path","keyWord","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查要搜尋的路徑是否都存在
                #函式說明:
                #s檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["self::checkMultiFileExist"]["fileArray"]=$conf["path"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["self::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=self::checkMultiFileExist($conf["self::checkMultiFileExist"]);
                unset($conf["self::checkMultiFileExist"]);

                #如果檢查目錄存在失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果目錄不存在
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果有路徑不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #設置提示有路徑不存在的訊息
                        $result["warning"][]="參數path的路徑沒有每個都存在";

                        #回傳結果
                        return $result;

                        }#if end

                #預設沒有找到檔案
                $result["found"]="false";

                #針對每個要搜尋的路徑
                foreach($conf["path"] as $path){

                        #函式說明:
                        #用find指令尋找檔案
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息.
                        #$result["function"],當前執行的函數名稱.
                        #$result["argu"],所使用的參數.
                        #$result["found"],是否有找到符合的檔案,"true"代表有;"false"代表沒有.
                        #$result["content"],找到的檔案陣列.
                        #必填參數:
                        #$conf["keyWord"],字串,要搜尋的檔案關鍵字,可用"*"符號,例如"*.qcow2",就代表檔案名成為"qcow2"結尾的檔案.
                        $conf["cmd::find"]["keyWord"]=$conf["keyWord"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["cmd::find"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["path"],字串,搜尋的路徑,預設為"/".
                        $conf["cmd::find"]["path"]=$path;
                        #$conf["fileOnly"],字串,"true"代表只要找檔案,"false"代表.
                        $conf["cmd::find"]["fileOnly"]="true";
                        #參考資料:
                        #http://php.net/manual/en/function.glob.php
                        $find=cmd::find($conf["cmd::find"]);
                        unset($conf["cmd::find"]);

                        #如果尋找檔案失敗
                        if($find["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$find;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果有找到符合的檔案
                        if($find["found"]==="true"){

                                #設置有找到檔案
                                $result["found"]="true";

                                #針對每個找到的檔案
                                foreach($find["content"] as $filtedFile){

                                        #設置有找到的檔案
                                        $result["content"][]=$filtedFile;

                                        }#foreach end

                                }#if end

                        }#foreach end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function findFile end

        /*
        #函式說明:
        #判斷檔案位於哪個分割區
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["content"],找到的檔案所屬分割區資訊.
        #必填參數:
        #$conf["file"],字串,檔案的路徑與名稱.
        $conf["file"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function addrInMountPoint(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #透過lsblk指令的輸出取得已經掛載的blk.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["content"],lsblk的輸出內容.
                #必填參數:
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["cmd::lsblk"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #無.
                $lsblk=cmd::lsblk($conf["cmd::lsblk"]);
                unset($conf["cmd::lsblk"]);

                #如果執行失敗
                if($lsblk["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$lsblk;

                        #回傳結果
                        return $result;

                        }#if end

                #將 $conf["file"] 轉換成絕對路徑
                #函式說明:
                #將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["argu"],使用的參數.
                #$result["content"],網址,若是在命令列執行,則為"null".
                #$result["webPathFromRoot"],相對於網頁根目錄的路徑.
                #$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「/」目錄開始的路徑.
                #$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
                #必填參數:
                #$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
                $conf["fileAccess::getInternetAddress"]["address"]=$conf["file"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                $conf["fileAccess::getInternetAddress"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                $getInternetAddress=fileAccess::getInternetAddress($conf["fileAccess::getInternetAddress"]);
                unset($conf["fileAccess::getInternetAddress"]);

                #如果執行失敗
                if($getInternetAddress["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$getInternetAddress;

                        #回傳結果
                        return $result;

                        }#if end

                #使用絕對位置作為輸入字串
                #函式說明:
                #尋找字串是否存在對應的關鍵字,且符合的最常關鍵字為何?
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],所使用的參數.
                #$result["founded"],是否有找到關鍵字,"true"代表有找到,"false"代表沒有找到.
                #$result["content"],最符合的字串完整內容.
                #必填參數:
                #$conf["input"],字串,要比對的字串陣列.
                $conf["search::findLikelyStr"]["input"]=$getInternetAddress["fileSystemAbsoulutePosition"];
                #$conf["keyWord"],字串陣列,要搜尋的關鍵字.
                $conf["search::findLikelyStr"]["keyWord"]=$lsblk["content"]["MOUNTPOINT"];
                $findLikelyStr=search::findLikelyStr($conf["search::findLikelyStr"]);
                unset($conf["search::findLikelyStr"]);

                #如果執行失敗
                if($findLikelyStr["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$findLikelyStr;

                        #回傳結果
                        return $result;

                        }#if end

                #如果找不到歸屬的分割區
                if($findLikelyStr["found"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$findLikelyStr;

                        #回傳結果
                        return $result;

                        }#if end

                #設置歸屬的分割區資訊
                $result["content"]=$findLikelyStr["content"];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function addrInMountPoint end

        /*
        #函式說明:
        #取得檔案的副檔名
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["content"],副檔名.
        #$result["name"],不含副檔的名稱.
        #$result["fullName"],含副檔的名稱.
        #$result["path"],檔案所處的路徑.
        #必填參數:
        #$conf["file"],字串,檔案的路徑與名稱.
        $conf["file"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getExtension(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化檔案的路徑
                $result["path"]="./";

                #用 "/" 來分割字串
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$conf["file"];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果檢查參數失敗
                if($spiltString["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化含副檔名的檔案名稱
                $result["fullName"]=$conf["file"];

                #如果有"/"存在
                if($spiltString["found"]==="true"){

                        #取得含副檔名的檔案名稱
                        $result["fullName"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];

                        #取得檔案的路徑
                        $result["path"]=substr($conf["file"],0,strlen($conf["file"])-strlen($result["fullName"]));

                        }#if end

                #用 "." 來分割字串
                #函式說明:
                #將固定格式的字串分開,並回傳分開的結果。
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要分割的原始字串內容
                #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                #$result["dataCounts"],爲總共分成幾段
                #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                #必填參數:
                $conf["stringProcess::spiltString"]["stringIn"]=$result["fullName"];#要處理的字串。
                $conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
                #可省略參數:
                #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                unset($conf["stringProcess::spiltString"]);

                #如果檢查參數失敗
                if($spiltString["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$spiltString;

                        #回傳結果
                        return $result;

                        }#if end

                #預設副檔名為 ""
                $result["content"]="";

                #預設不含副檔名的檔案名稱
                $result["name"]=$result["fullName"];

                #如果有"."存在
                if($spiltString["found"]==="true"){

                        #取得含副檔名
                        $result["content"]=$spiltString["dataArray"][$spiltString["dataCounts"]-1];

                        #取得不含副檔名的檔案名稱
                        $result["name"]=substr($result["fullName"],0,strlen($result["fullName"])-strlen($result["content"])-1);

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getExtension end

        /*
        #函式說明:
        #從檔案尾部開始讀取
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["content"],讀取到的內容陣列.
        #$result["totalLineCount"],檔案的總共行數.
        #$result["lines"],取得輸出的行數.
        #$result["lineNum"],取得當前行數.
        #必填參數:
        #$conf["file"],字串,檔案的路徑與名稱.
        $conf["file"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #$conf["web"],字串,"true"代表位網頁系統,"false"為檔案系統,預設為"false".
        #$conf["web"]="false";
        #$conf["line2start"],字串,從第幾列開始,預設為總行書減去linesPerTime+1.
        #$conf["line2start"]="";
        #$conf["linesPerTime"],字串,一次最多讀取幾列,預設爲10列.
        #$conf["linesPerTime"]="10";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function tail(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                $conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file","fileArgu");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("web","line2start","linesPerTime");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web","line2start","linesPerTime");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false",null,"10");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["file"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                #$conf["disableWebSearch"]="false";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                #$conf["userDir"]="true";
                #$conf["web"],字串,"true"代表位網頁系統,"false"為檔案系統,預設為"false".
                $conf["fileAccess::checkMultiFileExist"]["web"]=$conf["web"];
                #參考資料來源:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果執行失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檔案無法存取
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #取得檔案的行數
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #必填的參數
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="cat";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array($conf["file"],"|","wc","-l");
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果檢查參數失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #取得檔案總行數
                $result["totalLineCount"]=$callShell["output"][0];

                #如果未設置 $conf["line2start"]
                if(!isset($conf["line2start"])){

                        #$conf["line2start"]為總行數減去一次要看的行數減1
                        $conf["line2start"]=$result["totalLineCount"]-$conf["linesPerTime"]+1;

                        }#if end

                #如果開始行數小於1
                if($conf["line2start"]<1){

                        #$conf["line2start"]為總行數減去一次要看的行數減1
                        $conf["line2start"]=$result["totalLineCount"]-$conf["linesPerTime"]+1;

                        }#if end

                #如果開始行數小於1
                if($conf["line2start"]<1){

                        #$conf["line2start"]為1
                        $conf["line2start"]=1;

                        }#if end

                #取得指定範圍的行數
                #取得檔案的行數
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳的結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #必填的參數
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="sed";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-n",$conf["line2start"].",".($conf["line2start"]+$conf["linesPerTime"]-1)."p",$conf["file"]);
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果檢查參數失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #取得輸出的行數
                $result["lines"]=count($callShell["output"]);

                #取得目前的輸出內容
                $result["content"]=$callShell["output"];

                #取得當前行數
                $result["lineNum"]=$conf["line2start"]+$result["lines"]-1;

                #如果當前行號小於總行數
                if($result["lineNum"]<$result["totalLineCount"]){

                        #設置還有剩餘的內容
                        $result["left"]="true";

                        }#if end

                #反之
                else{

                        #設置無剩餘的內容
                        $result["left"]="false";

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function tail end

        /*
        #函式說明:
        #解析PHP檔案裡面的變數.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["content"],找到的變數內容陣列,若有多個變數則會用array來表示.
        #必填參數:
        #$conf["file"],字串,檔案的路徑與名稱.
        $conf["file"]="";
        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
        $conf["fileArgu"]=__FILE__;
        #$conf["varName"],字串陣列,要搜尋的變數名稱,例如要搜尋變數$email則輸入"email".
        $conf["varName"]=array();
        #可省略參數:
        #$conf["web"],是要取得網路上的檔案則為"true";反之則為"false",預設為"false".
        #$conf["web"]="true";
        #$conf["allVarCountSame"],字串,是否每個參數的數量要一致,預設為"false"不要;反之為"true"代表要.
        #$conf["allVarCountSame"]="false";
        #參考資料:
        #https://www.php.net/manual/en/function.parse-str.php
        #備註:
        #無.
        */
        public static function parseVaraiableInPHPfile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("file","fileArgu","varName");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","array");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                $conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file","fileArgu","varName");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("web","allVarCountSame");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web","allVarCountSame");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存解析出來的變數內容
                $result["content"]=array();

                #讀取檔案
                #函式說明:
                #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                #回傳的變數說明:
                #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
                #$result["error"],錯誤訊息提示.
                #$result["warning"],警告訊息.
                #$result["function"],當前執行的函數名稱.
                #$result["fileContent"],爲檔案的內容陣列.
                #$result["lineCount"],爲檔案內容總共的行數.
                #$result["fullContent"],為檔案的完整內容.
                #$result["base64data"],為檔案的base64內容.
                #$result["mimeType"],為檔案的mime type.
                #必填參數:
                #$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
                $conf["ileAccess::getFileContent"]["filePositionAndName"]=$conf["file"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["ileAccess::getFileContent"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["web"],是要取得網路上的檔案則為"true";反之則為"false".
                $conf["ileAccess::getFileContent"]["web"]=$conf["web"];
                #參考資料:
                #file(),取得檔案內容的行數.
                #file=>http:#php.net/manual/en/function.file.php
                #rtrim(),剔除透過file()取得每行內容結尾的換行符號.
                #filesize=>http://php.net/manual/en/function.filesize.php
                $getFileContent=fileAccess::getFileContent($conf["ileAccess::getFileContent"]);
                unset($conf["ileAccess::getFileContent"]);

                #如果讀取檔案失敗
                if($getFileContent["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$getFileContent;

                        #回傳結果
                        return $result;

                        }#if end

                #針對每列檔案內容
                foreach($getFileContent["fileContent"] as $line){

                        #針對每個要搜尋的變數
                        foreach($conf["varName"] as $keyWord){

                                #如果關鍵字小於被搜尋的字串長度
                                if( strlen($line) < strlen($keyWord)+1 ){

                                        #跳過
                                        continue;

                                        }#if end

                                #函式說明:
                                #取得符合特定字首與字尾的字串
                                #回傳結果:
                                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                                #$result["function"],當前執行的函數名稱.
                                #$result["error"],錯誤訊息陣列.
                                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                                #$result["returnString"],爲符合字首條件的字串內容。
                                #$result["argu"],使用的參數.
                                #必填參數:
                                #$conf["checkString"],字串,要檢查的字串.
                                $conf["search::getMeetConditionsString"]["checkString"]=$line;
                                #可省略參數:
                                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                                $conf["search::getMeetConditionsString"]["frontWord"]="$".$keyWord;
                                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                                $conf["search::getMeetConditionsString"]["tailWord"]=";";
                                #參考資料:
                                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                                unset($conf["search::getMeetConditionsString"]);

                                #如果失敗
                                if($getMeetConditionsString["status"]==="false"){

                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置執行失敗訊息
                                        $result["error"]=$getMeetConditionsString;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果有找到關鍵字
                                if($getMeetConditionsString["founded"]==="true"){

                                        #剔除變數名稱
                                        #函式說明:
                                        #將字串特定關鍵字與其前面的內容剔除
                                        #回傳結果:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["warning"],警告訊息鎮列.
                                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["oriStr"],要處理的原始字串內容.
                                        #$result["content"],處理好的的字串內容.
                                        #必填參數:
                                        #$conf["stringIn"],字串,要處理的字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$line;
                                        #$conf["keyWord"],字串,特定字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="$".$keyWord;
                                        #可省略參數:
                                        #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,直到沒有關鍵字為止.
                                        #$conf["recursive"]="true";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                        #如果執行失敗
                                        if($delStrBeforeKeyWord["status"]==="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置執行失敗訊息
                                                $result["error"]=$delStrBeforeKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果沒有找到應該存在的php變數
                                        if($delStrBeforeKeyWord["founded"]==="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置執行失敗訊息
                                                $result["error"]=$delStrBeforeKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #剔除 "=" 前面的內容
                                        #函式說明:
                                        #將字串特定關鍵字與其前面的內容剔除
                                        #回傳結果:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["warning"],警告訊息鎮列.
                                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["oriStr"],要處理的原始字串內容.
                                        #$result["content"],處理好的的字串內容.
                                        #必填參數:
                                        #$conf["stringIn"],字串,要處理的字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$delStrBeforeKeyWord["content"];
                                        #$conf["keyWord"],字串,特定字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="=";
                                        #可省略參數:
                                        #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,直到沒有關鍵字為止.
                                        #$conf["recursive"]="true";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                        #如果執行失敗
                                        if($delStrBeforeKeyWord["status"]==="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置執行失敗訊息
                                                $result["error"]=$delStrBeforeKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果沒有找“=”關鍵字
                                        if($delStrBeforeKeyWord["founded"]==="false"){

                                                #跳過
                                                continue;

                                                }#if end

                                        #剔除 value 前面的空白
                                        #函式說明:
                                        #將字串特定關鍵字與其前面的內容剔除
                                        #回傳結果:
                                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                        #$result["error"],錯誤訊息陣列.
                                        #$result["warning"],警告訊息鎮列.
                                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["oriStr"],要處理的原始字串內容.
                                        #$result["content"],處理好的的字串內容.
                                        #必填參數:
                                        #$conf["stringIn"],字串,要處理的字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$delStrBeforeKeyWord["content"];
                                        #$conf["keyWord"],字串,特定字串.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=" ";
                                        #可省略參數:
                                        #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,直到沒有關鍵字為止.
                                        $conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                        #如果執行失敗
                                        if($delStrBeforeKeyWord["status"]==="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置執行失敗訊息
                                                $result["error"]=$delStrBeforeKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #取得找到的變數
                                        eval("\$result[\"content\"][\"".$keyWord."\"][]=".$delStrBeforeKeyWord["content"]);

                                        }#if end

                                }#foreach end

                        }#foreach end

                #如果 allVarCountSame 設置為 "true"
                if($conf["allVarCountSame"]==="true"){
                
                        #每個變數的數量初始為0
                        $count=0;
                
                        #針對每個解析出來的變數
                        foreach($conf["varName"] as $varName){
                        
                                #取得該變數數量
                                $varCount=count($result["content"][$varName]);
                        
                                #如果尚無變數數量資料
                                if($count===0){
                                
                                        #直接儲存之
                                        $count=$varCount;
                                
                                        #看下一個變數
                                        continue;
                                
                                        }#if end
                                        
                                #如果變數數量不一樣
                                if($count!==$varCount){
                                
                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置執行失敗訊息
                                        $result["error"]="config file error";

                                        #回傳結果
                                        return $result;
                                
                                        }#if end
                                        
                                
                        
                                }#foreach end
                
                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function parseVaraiableInPHPfile end

        /*
        #函式說明:
        #開啟特定目錄,取得底下的檔案路徑清單.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["argu"],所使用的參數.
        #$result["content"],讀取到的內容陣列.
        #$result["content"][$i],第$i+1個結果.
        #$result["content"][$i]["name"],第$i+1個名稱.
        #$result["content"][$i]["dir"],第$i+1個檔案是否為資料夾.
        #$result["content"][$i]["info"],第$i+1個檔案的額外資訊.
        #$result["content"][$i]["size"],第$i+1個檔案的大小(bytes).
        #必填參數:
        #$conf["path"],字串,要取得檔案資訊的所屬路徑.
        $conf["path"]="";
        #可省略參數:
        #無.
        #參考資料
        #無.
        #備註:
        #無.
        */
        public static function listInfo(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                $conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("web");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存解析出來的變數內容
                $result["content"]=array();

                #取得特定位置的資訊
                $pathInfo=@dir($conf["path"]);

                #如果取得路徑資訊失敗
                if($pathInfo===false){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"][]="無法存取路徑(".$conf["path"].")";

                        #回傳結果
                        return $result;

                        }#if end

                #讀取底下一個檔案,暫存到 $tmpItem 裡面,且當結果不為 false 時進入迴圈.
                while(false !== $tmpItem = $pathInfo->read()){

                        #宣告儲存資訊的變數
                        $item=array();

                        #儲存名稱
                        $item["name"]=$tmpItem;

                        #預設不為資料夾
                        $item["dir"]="false";

                        #若為資料夾
                        if(is_dir($conf["path"]."/".$tmpItem)){

                                #設置為"true"
                                $item["dir"]="true";

                                }#if end

                        #取得檔案識別器
                        $finfo = finfo_open(FILEINFO_MIME);

                        #取得 info
                        $item["info"]=@finfo_file($finfo,$conf["path"]."/".$tmpItem);

                        #取得檔案大小
                        $item["size"]=filesize($conf["path"]."/".$tmpItem);

                        #close connection
                        finfo_close($finfo);

                        #記錄該檔案資訊
                        $result["content"][]=$item;

                        }#while end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function listInfo end

        /*
        #函式說明:
        #取得目錄底下的詳細資訊.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["size"],該清單的大小,單位為bytes.
        #$result["dataCount"],該清單的長度.
        #$result["path"],字串,檢視的路徑,必為"/"結尾.
        #$result["content"],指定目錄底下的所有檔案資訊.
        #$result["content"][$i]["nType&permission"],第$i個節點類型、權限.
        #$result["content"][$i]["nType"],第$i個節點類型,"-"代表檔案,"d"代表資料夾.
        #$result["content"][$i]["permission"],第$i個節點權限.
        #$result["content"][$i]["ownByUser"],第$i個節點擁有者賬號.
        #$result["content"][$i]["ownByGroup"],第$i個節點擁有者群組.
        #$result["content"][$i]["bytes"],第$i個節點大小.
        #$result["content"][$i]["date"],第$i個節點最後變更日期.
        #$result["content"][$i]["time"],第$i個節點最後異動時間.
        #$result["content"][$i]["timeDetail"],第$i個節點最後異動詳細時間.
        #$result["content"][$i]["timezone"],第$i個節點的時區.
        #$result["content"][$i]["name"],第$i個節點的名稱.
        #$result["content"][$i]["secondName"],第$i個節點為檔案時,若有附檔名,會記錄在這.
        #$result["content"][$i]["mimeType"],第$i個節點為檔案且可以讀取時,會有 mime type 可取得.
        #必填參數:
        #$conf["path"],字串,要檢視的路徑,若非"/"結尾,會自動補上.
        $conf["path"]="";
        #可省略參數:
        #無.
        #參考資料:
        #https://www.businessweekly.com.tw/careers/Blog/14307
        #備註:
        #無.
        */
        public static function ls(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["simpleError"],簡單表示的錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可省略參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("path");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #備註:
                #無.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果執行失敗
                if($checkArguments["status"]==="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果參數檢查不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #確認 $conf["path"] 是否為 "/" 結尾
                #函式說明:
                #取得符合特定字首與字尾的字串
                #回傳結果:
                #$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
                #$result["function"],當前執行的函數名稱.
                #$result["error"],錯誤訊息陣列.
                #$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
                #$result["content"],符合條件的字串,去掉字首字尾後的結果.
                #$result["returnString"],爲符合字首字、尾條件的字串內容。
                #$result["argu"],使用的參數.
                #必填參數:
                #$conf["checkString"],字串,要檢查的字串.
                $conf["search::getMeetConditionsString"]["checkString"]=$conf["path"];
                #可省略參數:
                #$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
                #$conf["frontWord"]="";
                #$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
                $conf["search::getMeetConditionsString"]["tailWord"]="/";
                #參考資料:
                #str_spilt(),可以將字串依照字母分割成一個個陣列字串。
                #備註:
                #無.
                $getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
                unset($conf["search::getMeetConditionsString"]);

                #如果執行失敗
                if($getMeetConditionsString["status"]==="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$getMeetConditionsString;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有 "/" 結尾
                if($getMeetConditionsString["founded"]==="false"){

                        #於結尾加上 "/"
                        $conf["path"]=$conf["path"]."/";

                        }#if end

                #記錄真正的路徑
                $result["path"]=$conf["path"];

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #$result["escape"],陣列,儲存重新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
                #必填參數:
                #$conf["command"],字串,要執行的指令.
                $conf["external::callShell"]["command"]="ls";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=__FILE__;
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("-al","--full-time","-t","-B",$conf["path"]);
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                #若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #debug
                #var_dump(__FILE__,__LINE__,$callShell);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行錯誤
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存檔案資訊為空
                $result["content"]=array();

                #針對每行輸出
                foreach($callShell["output"] as $index=>$line){

                        #如果是第一筆
                        if($index===0){

                                #取得資料筆數
                                $result["dataCount"]=explode(" ",$line)[0];

                                #換下一輪
                                continue;

                                }#if end

                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果.
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                        #必填參數:
                        #$conf["stringIn"],字串,要處理的字串.
                        $conf["stringProcess::spiltString"]["stringIn"]=$line;
                        #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                        $conf["stringProcess::spiltString"]["spiltSymbol"]=" ";
                        #可省略參數:
                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果執行失敗
                        if($spiltString["status"]==="false"){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有分割用的" "
                        if($spiltString["found"]==="false"){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割好的數量小於8
                        if($spiltString["dataCounts"]<8){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #初始化要儲存的檔案資訊陣列
                        $fileInfo=array();

                        #取得 節點類型、權限
                        $fileInfo["nType&permission"]=$spiltString["dataArray"][0];

                        #剔除結尾的 "."
                        $fileInfo["nType&permission"]=substr($fileInfo["nType&permission"],0,strlen($fileInfo["nType&permission"])-1);

                        #取得節點類型
                        $fileInfo["nType"]=$fileInfo["nType&permission"][0];

                        #取得節點權限
                        $fileInfo["permission"]=substr($fileInfo["nType&permission"],1);

                        #取得擁有者賬號
                        $fileInfo["ownByUser"]=$spiltString["dataArray"][2];

                        #取得群組擁有者群組
                        $fileInfo["ownByGroup"]=$spiltString["dataArray"][3];

                        #取得size
                        $fileInfo["bytes"]=$spiltString["dataArray"][4];

                        #取得最後異動日期
                        $fileInfo["date"]=$spiltString["dataArray"][5];

                        #取得最後異動時間
                        $fileInfo["time"]=explode(".",$spiltString["dataArray"][6])[0];

                        #取得最後異動的詳細時間
                        $fileInfo["timeDetail"]=$spiltString["dataArray"][6];

                        #取得timezone資訊
                        $fileInfo["timezone"]=$spiltString["dataArray"][7];

                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果.
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                        #必填參數:
                        #$conf["stringIn"],字串,要處理的字串.
                        $conf["stringProcess::spiltString"]["stringIn"]=$line;
                        #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                        $conf["stringProcess::spiltString"]["spiltSymbol"]=$fileInfo["date"]." ".$fileInfo["timeDetail"]." ".$fileInfo["timezone"];
                        #可省略參數:
                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                        $conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果執行失敗
                        if($spiltString["status"]==="false"){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有分割用的" "
                        if($spiltString["found"]==="false"){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割好的數量小於8
                        if($spiltString["dataCounts"]<2){

                                #設置執行錯誤
                                $result["status"]="false";

                                #設置錯誤訊息
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得節點名稱,剔除開頭的空白.
                        $fileInfo["name"]=substr($spiltString["dataArray"][1],1);

                        #排除 "." 跟 ".."
                        if($fileInfo["name"]==="." || $fileInfo["name"]===".."){

                                #跳過
                                continue;

                                }#if end

                        #如果是檔案
                        if($fileInfo["nType"]==="-"){

                                #取得mime type
                                $fileInfo["mimeType"]=@mime_content_type($conf["path"].$fileInfo["name"]);

                                #如果讀取失敗
                                if($fileInfo["mimeType"]===false){

                                        #通常為沒有權限

                                        #跳過該檔案
                                        continue;

                                        }#if end

                                #確認檔案名稱中間含是否有 "."
                                #函式說明:
                                #取得關鍵字在字串的哪個位置(字首,字尾,中間)
                                #回傳結果:
                                #$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
                                #$result["error"],錯誤訊息陣列.
                                #$result["function"],當前執行的函數名稱.
                                #$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
                                #$result["argu"],傳入的參數.
                                #$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
                                #$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
                                #$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
                                #$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
                                #$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
                                #必填參數:
                                #$conf["inputStr"],字串,被搜尋的字串.
                                $conf["search::findKeyWordPosition"]["inputStr"]=$fileInfo["name"];
                                #$conf["keyWord"],字串,關鍵字.
                                $conf["search::findKeyWordPosition"]["keyWord"]=".";
                                #可省略參數:
                                #無.
                                #參考資料:
                                #http://php.net/manual/en/function.strpos.php
                                #備註:
                                #無.
                                $findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
                                unset($conf["search::findKeyWordPosition"]);

                                #如果執行失敗
                                if($findKeyWordPosition["status"]==="false"){

                                        #設置執行錯誤
                                        $result["status"]="false";

                                        #設置錯誤訊息
                                        $result["error"]=$spiltString;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果含有 "." 存在
                                if($findKeyWordPosition["found"]==="true"){

                                        #如果 "." 是在中間,不是在尾巴.
                                        if($findKeyWordPosition["center"]==="true" && $findKeyWordPosition["tail"]==="false"){

                                                #取得 "." 之後的內容
                                                #函式說明:
                                                #將字串特定關鍵字與其前面的內容剔除
                                                #回傳結果:
                                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                                #$result["error"],錯誤訊息陣列.
                                                #$result["warning"],警告訊息鎮列.
                                                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                                                #$result["function"],當前執行的函數名稱.
                                                #$result["argu"],使用的參數.
                                                #$result["oriStr"],要處理的原始字串內容.
                                                #$result["content"],處理好的的字串內容.
                                                #$result["deleted"],被移除的內容.
                                                #必填參數:
                                                #$conf["stringIn"],字串,要處理的字串.
                                                $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$fileInfo["name"];
                                                #$conf["keyWord"],字串,特定字串.
                                                $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";
                                                #可省略參數:
                                                #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
                                                $conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
                                                #$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
                                                #$conf["lastResult"]=$delStrBeforeKeyWord;
                                                #參考資料:
                                                #無.
                                                #備註:
                                                #無.
                                                $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                                                unset($conf["stringProcess::delStrBeforeKeyWord"]);

                                                #如果執行失敗
                                                if($delStrBeforeKeyWord["status"]==="false"){

                                                        #設置執行錯誤
                                                        $result["status"]="false";

                                                        #設置錯誤訊息
                                                        $result["error"]=$spiltString;

                                                        #回傳結果
                                                        return $result;

                                                        }#if end

                                                #如果該存在的 "." 不存在
                                                if($delStrBeforeKeyWord["founded"]==="false"){

                                                        #設置執行錯誤
                                                        $result["status"]="false";

                                                        #設置錯誤訊息
                                                        $result["error"]=$spiltString;

                                                        #回傳結果
                                                        return $result;

                                                        }#if end

                                                #取得附檔名
                                                $fileInfo["secondName"]=$delStrBeforeKeyWord["content"];

                                                }#if end

                                        }#if end

                                }#if end

                        #儲存檔案資訊
                        $result["content"][]=$fileInfo;

                        }#foreach end

                #設置清單的長度
                $result["dataCount"]=count($result["content"]);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function ls end

        /*
        #函式說明:
        #將 ~ 轉換為家目錄路徑
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],轉換好的內容.
        #必填參數:
        #$conf["fileArgu"],字串,變數__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #可省略參數:
        #無.
        #參考資料:
        #https://www.businessweekly.com.tw/careers/Blog/14307
        #備註:
        #無.
        */
        public static function tildeToPath(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("web");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("web");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #必填參數:
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="echo";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=array("~");
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["plainArgu"],字串陣列,哪幾個參數不要加上"",若為"true"則代表不用包;反之"false"則代表要包.
                #$conf["plainArgu"]=array();
                #$conf["useApostrophe"],字串陣列,如果有需要包住,則用「'」,而非「"」處理.前者為"true";後者為"false".
                #$conf["useApostrophe"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                #$conf["getErr"]="false";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有預期的輸出
                if(!isset($callShell["output"][0])){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"][]="沒有得到預期的輸出";

                        #設置執行失敗訊息
                        $result["error"][]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #取得輸出
                $result["content"]=$callShell["output"][0];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function tildeToPath end

        /*
        #函式說明:
        #建立軟連結.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],軟連結的資訊.
        #$result["cmd"],執行的指令陣列.
        #必填參數:
        #$conf["fileArgu"],字串,變數__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["linkTo"],字串,軟連結要指向哪邊.
        $conf["linkTo"]="";
        #可省略參數:
        #$conf["path"],字串,軟連結要放在哪邊,預設為當前位置.
        #$conf["path"]="";
        #$conf["name"],字串,軟連結的名稱,預設為 "linkTo" 參數的檔案或目錄名稱.
        #$conf["name"]="";
        #$conf["overWrite"],字串,"true"代表要移除既有的項目名稱,來重新建立軟連結;預設為"false"不進行處理.
        #$conf["overWrite"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function createLink(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","linkTo");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("path","name","overWrite");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("path","name","overWrite");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果是相對位置
                if(!(strpos($conf["linkTo"],"/")===0)){

                        #將 $conf["linkTo"] 轉換為針對產生位置的相對位置.
                        #函式說明:
                        #將多個路徑字串變成相對於當前路徑的相對路徑字串
                        #回傳結果:
                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["content"],字串陣列,多個轉換好的相對路徑字串.
                        #必填參數:
                        #$conf["path"],陣列字串,要轉換成相對路徑的字串.;
                        $conf["fileAccess::getRelativePath"]["path"]=array($conf["linkTo"]);
                        #$conf["fileArgu"],字串,當前路徑.
                        $conf["fileAccess::getRelativePath"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["baseFrom"],字串,指定要依據哪個位置為起點的起始位置,預設不指定,代表使用當前路徑.
                        $conf["fileAccess::getRelativePath"]["baseFrom"]=$conf["path"];
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $getRelativePath=fileAccess::getRelativePath($conf["fileAccess::getRelativePath"]);
                        unset($conf["fileAccess::getRelativePath"]);

                        #如果執行失敗
                        if($getRelativePath["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$getRelativePath;

                                #回傳結果
                                return $result;

                                }#if end

                        /*
                        #break point
                        var_dump($conf);
                        var_dump($getRelativePath);
                        exit;
                        */

                        #取得執行的指令
                        $result["cmd"][]=$getRelativePath["cmd"];

                        #取得正確的相對位置
                        $conf["linkTo"]=$getRelativePath["content"][0];

                        }#if end

                #初始化給 ln 指令的參數
                $paramsForLn=array("-s",$conf["linkTo"]);

                #函式說明:
                #將字串特定關鍵字與其前面的內容剔除
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["warning"],警告訊息鎮列.
                #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                #$result["function"],當前執行的函數名稱.
                #$result["oriStr"],要處理的原始字串內容.
                #$result["content"],處理好的的字串內容.
                #必填參數:
                #$conf["stringIn"],字串,要處理的字串.
                $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$conf["linkTo"];
                #$conf["keyWord"],字串,特定字串.
                $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="/";
                #可省略參數:
                #$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
                $conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
                #參考資料:
                #無.
                #備註:
                #無.
                $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                unset($conf["stringProcess::delStrBeforeKeyWord"]);

                #var_dump(__LINE__." ".print_r($delStrBeforeKeyWord,true));

                #如果執行失敗
                if($delStrBeforeKeyWord["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$delStrBeforeKeyWord;

                        #回傳結果
                        return $result;

                        }#if end

                #如果沒有找到 "/"
                if($delStrBeforeKeyWord["founded"]==="false"){

                        #設置 預設的 軟連名稱
                        $softLink=$conf["linkTo"];

                        }#if end

                #反之有 "/"
                else{

                        #設置 預設的 軟連結名稱
                        $softLink=$delStrBeforeKeyWord["content"];

                        }#else end

                /*
                #break point
                var_dump(__LINE__." ".$softLink);
                exit;
                */

                #預設欲建立的軟連結名稱
                $createdSoftLink=$softLink;

                #如果有設置 path
                if(isset($conf["path"])){

                        #確認 path 存在
                        #函式說明:
                        #建立資料夾,若要建立的資料夾所屬路徑不存在,則會自動嘗試建立,建立後的資料夾也可指定權限,要設定權限,必須為資料夾的擁有者.
                        #回傳結果:
                        #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                        #$result["error"],錯誤訊息陣列
                        #$result["warning"],警告訊息陣列
                        #必填參數:
                        #$conf["dirPositionAndName"]="";#新建的位置與名稱
                        $conf["fileAccess::createNewFolder"]["dirPositionAndName"]=$conf["path"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::createNewFolder"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["dirPermission"],字串,新建資料夾的權限設定,預設爲0770,亦即擁有者,同群組者可以讀,寫,存取,其他人僅能存取.
                        #$conf["dirPermission"]="";
                        #參考資料:
                        #mkdir=>http://php.net/manual/en/function.mkdir.php
                        #chmod=>http://php.net/manual/en/function.chmod.php
                        #參考資料:
                        #無.
                        #備註:
                        #同 function createFolderAfterCheck.
                        $createNewFolder=fileAccess::createNewFolder($conf["fileAccess::createNewFolder"]);
                        unset($conf["fileAccess::createNewFolder"]);

                        #如果執行失敗
                        if($createNewFolder["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$createNewFolder;

                                #回傳結果
                                return $result;

                                }#if end

                        #var_dump(__LINE__." ".print_r($conf,true));

                        #預設要加 slash
                        $slash="/";

                        #如果 path 為 "/" 結尾
                        if($conf["path"][strlen($conf["path"])-1]==="/"){

                                #不用 slash
                                $slash="";

                                }#if end

                        #如果有設置 name
                        if(isset($conf["name"])){

                                #指定軟連結要放在哪邊
                                $paramsForLn[]=$conf["path"].$slash.$conf["name"];

                                #更新欲建立的軟連結名稱
                                $createdSoftLink=$conf["path"].$slash.$conf["name"];

                                /*
                                #break point
                                var_dump($conf["path"],$softLink,$createdSoftLink);
                                exit;
                                */

                                }#if end

                        #反之
                        else{

                                #指定軟連結要放在哪邊
                                $paramsForLn[]=$conf["path"];

                                #更新欲建立的軟連結名稱
                                $createdSoftLink=$conf["path"].$slash.$softLink;

                                /*
                                #break point
                                var_dump($conf["path"],$softLink,$createdSoftLink);
                                exit;
                                */

                                }#else end

                        #var_dump($createdSoftLink);

                        }#if end

                #反之如果有設置 name
                else if(isset($conf["name"])){

                        #指定軟連結的名稱
                        $paramsForLn[]=$conf["name"];

                        #更新欲建立的軟連結名稱
                        $createdSoftLink=$conf["name"];

                        #var_dump(__LINE__." ".$createdSoftLink);

                        }#if end

                /*
                # break point
                var_dump($createdSoftLink);
                exit;
                */

                #如果要覆蓋既有的目標
                if($conf["overWrite"]==="true"){

                        #函式說明:
                        #移除檔案
                        #回傳結果:
                        #$result["status"],"true"代表移除成功,"false"代表移除失敗.
                        #$result["error"],錯誤訊息陣列
                        #$result["warning"],警告訊息陣列
                        #$result["function"],當前執行的函數名稱
                        #必填參數:
                        #$conf["fileAddress"],字串,要移除檔案的位置.
                        $conf["fileAccess::delFile"]["fileAddress"]=$createdSoftLink;
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
                        $conf["fileAccess::delFile"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
                        #$conf["commentsArray"]=array("");
                        #$conf["allowDelSymlink"],字串,預設為"false",不移除軟連結;"true"代表要移除軟連結.
                        $conf["fileAccess::delFile"]["allowDelSymlink"]="true";
                        #$conf["allowDelFolder"],字串,預設為"false",不移除目錄;"true"代表要移除目錄.
                        $conf["fileAccess::delFile"]["allowDelFolder"]="true";
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $delFile=fileAccess::delFile($conf["fileAccess::delFile"]);
                        unset($conf["fileAccess::delFile"]);

                        /*
                        #break point
                        var_dump($delFile);
                        exit;
                        */

                        #如果執行失敗
                        if($delFile["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$delFile;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #必填參數:
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="ln";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=$paramsForLn;
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["plainArgu"],字串陣列,哪幾個參數不要加上"",若為"true"則代表不用包;反之"false"則代表要包.
                #$conf["plainArgu"]=array();
                #$conf["useApostrophe"],字串陣列,如果有需要包住,則用「'」,而非「"」處理.前者為"true";後者為"false".
                #$conf["useApostrophe"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                $conf["external::callShell"]["getErr"]="true";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #保存執行的指令
                $result["cmd"][]=$callShell["cmd"];

                #初始化給 ls 指令的參數
                $paramsForLs=array("-l",$paramsForLn[count($paramsForLn)-1]);

                #取得軟連結的資訊
                #函式說明:
                #呼叫shell執行系統命令,並取得回傳的內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["argu"],使用的參數.
                #$result["cmd"],執行的指令內容.
                #$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
                #$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
                #$result["running"],是否還在執行.
                #$result["pid"],pid.
                #$result["statusCode"],執行結束後的代碼.
                #必填參數:
                #$conf["command"],字串,要執行的指令與.
                $conf["external::callShell"]["command"]="ls";
                #$conf["fileArgu"],字串,變數__FILE__的內容.
                $conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
                $conf["external::callShell"]["argu"]=$paramsForLs;
                #$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
                #$conf["arguIsAddr"]=array();
                #$conf["plainArgu"],字串陣列,哪幾個參數不要加上"",若為"true"則代表不用包;反之"false"則代表要包.
                #$conf["plainArgu"]=array();
                #$conf["useApostrophe"],字串陣列,如果有需要包住,則用「'」,而非「"」處理.前者為"true";後者為"false".
                #$conf["useApostrophe"]=array();
                #$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
                #$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
                #$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
                #$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
                #$conf["enablePrintDescription"]="true";
                #$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
                #$conf["printDescription"]="";
                #$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
                $conf["external::callShell"]["escapeshellarg"]="true";
                #$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
                #$conf["thereIsShellVar"]=array();
                #$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
                #$conf["username"]="";
                #$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
                #$conf["password"]="";
                #$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
                #$conf["useScript"]="";
                #$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
                #$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
                #$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
                #$conf["inBackGround"]="";
                #$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
                $conf["external::callShell"]["getErr"]="true";
                #$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
                #$conf["doNotRun"]="false";
                #參考資料:
                #exec=>http://php.net/manual/en/function.exec.php
                #escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
                #escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
                #備註:
                #不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
                $callShell=external::callShell($conf["external::callShell"]);
                unset($conf["external::callShell"]);

                #如果執行失敗
                if($callShell["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$callShell;

                        #回傳結果
                        return $result;

                        }#if end

                #保存執行的指令
                $result["cmd"][]=$callShell["cmd"];

                #取得軟連結的資訊
                $result["content"]=$callShell["output"];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function createLink end

        /*
        #函式說明:
        #針對特定目錄下的內容建立軟連結.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],字串陣列,每個建立的軟連結資訊.
        #必填參數:
        #$conf["fileArgu"],字串,變數__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["linkToDir"],字串,軟連結要指向哪個目錄底下的內容.
        $conf["linkToDir"]="";
        #可省略參數:
        #$conf["path"],字串,軟連結要放在哪邊,預設為當前位置.
        #$conf["path"]="";
        #$conf["name"],字串陣列,軟連結的名稱,預設為 "linkToDir" 目錄底下的檔案或目錄名稱.若要指定特定檔案目錄的軟連結名稱,則可以用 $conf["name"][]=array("原始名稱","新的名稱"); 來指定.
        #$conf["name"]=array(array("oriName","newName"));
        #$conf["overWrite"],字串,"true"代表要移除既有的項目名稱,來重新建立軟連結;預設為"false"不進行處理.
        #$conf["overWrite"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function createMultiLinkInDir(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","linkToDir");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("path","name","overWrite");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("path","name","overWrite");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","array","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(".",null,"false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #取得目錄底下所有目錄與檔案清單.
                #回傳結果:
                #$result["status"],"true"爲建立成功,"false"爲建立失敗.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],函數名稱.
                #$result["content"],陣列,目錄底下的檔案與子目錄.
                #$result["content"][$i]["name"],字串,目錄底下的檔案與子目錄的名稱.
                #$result["content"][$i]["folder"],字串,第$i+1個名稱為目錄還是檔案.
                #$result["folder"],字串,當前目標為目錄還是檔案"true"代表為目錄,"false"代表為檔案.
                #$result["position"],目前的位置.
                #必填參數:
                #$conf["position"],字串,目錄位置與名稱,「.」代表當前位置,「..」代表上一層.
                $conf["fileAccess::getList"]["position"]=$conf["linkToDir"];
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::getList"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #無
                #參考資料:
                #opendir=>http://php.net/manual/en/function.opendir.php
                #is_dir=>http://php.net/manual/en/function.is-dir.php
                #備註:
                #無.
                $getList=fileAccess::getList($conf["fileAccess::getList"]);
                unset($conf["fileAccess::getList"]);

                #如果檢查參數失敗
                if($getList["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$getList;

                        #回傳結果
                        return $result;

                        }#if end

                #針對目標目錄底下的所有檔案
                foreach($getList["content"] as $oriName){

                        #如果有設定 $conf["name"]
                        if(isset($conf["name"])){

                                #預設不指定新的軟連結名稱
                                unset($newSoftLinkName);

                                #針對每個原始目標的名稱
                                foreach($conf["name"] as $customName){

                                        #如果是指定的目標
                                        if($oriName["name"]===$customName[0]){

                                                #設置新的軟連結名稱
                                                $newSoftLinkName=$customName[1];

                                                }#if end

                                        }#foreach end

                                }#if end

                        #建立軟連結
                        #函式說明:
                        #建立軟連結.
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息.
                        #$result["function"],當前執行的函數名稱.
                        #$result["content"],軟連結的資訊.
                        #必填參數:
                        #$conf["fileArgu"],字串,變數__FILE__的內容.
                        $conf["fileAccess::createLink"]["fileArgu"]=$conf["fileArgu"];
                        #$conf["linkTo"],字串,軟連結要指向哪邊.
                        $conf["fileAccess::createLink"]["linkTo"]=$conf["linkToDir"]."/".$oriName["name"];
                        #可省略參數:
                        #$conf["path"],字串,軟連結要放在哪邊,預設為當前位置.
                        $conf["fileAccess::createLink"]["path"]=$conf["path"];

                        #如果有新的軟連結名稱
                        if(isset($newSoftLinkName)){

                                #$conf["name"],字串,軟連結的名稱,預設為 "linkTo" 參數的檔案或目錄名稱.
                                $conf["fileAccess::createLink"]["name"]=$newSoftLinkName;

                                }#if end

                        #$conf["overWrite"],字串,"true"代表要移除既有的項目名稱,來重新建立軟連結;預設為"false"不進行處理.
                        $conf["fileAccess::createLink"]["overWrite"]=$conf["overWrite"];

                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $createLink=fileAccess::createLink($conf["fileAccess::createLink"]);
                        unset($conf["fileAccess::createLink"]);

                        #var_dump(__LINE__." ".print_r($createLink,true));

                        #如果檢查參數失敗
                        if($createLink["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$createLink;

                                #回傳結果
                                return $result;

                                }#if end

                        #儲存建立好的軟連結資訊
                        $result["content"][]=$createLink["content"];

                        }#foreach end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function createMultiLink end

        /*
        #函式說明:
        #更新檔案的內容.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],更新的資訊.
        #$result["content"][$lineIndex]["ori"],原始 $lineIndex+1 行的內容,若為null則代表不存在.
        #$result["content"][$lineIndex]["new"],新 $lineIndex+1 行的內容,若為null則代表不存在.
        #必填參數:
        #$conf["fileArgu"],字串,變數__FILE__的內容.
        $conf["fileArgu"]=__FILE__;
        #$conf["file"],字串,要更新的檔案位置與名稱.
        $conf["file"]="";
        #可省略參數:
        #$conf["overWriteWith"],字串陣列,要置換成什麼樣的內容,每個元素代表一行內容.
        #$conf["overWriteWith"]=array();
        #$conf["replaceWith"],字串陣列,要將什麼內容置換成什麼內容.
        #$conf["replaceWith"]=array(array("ori content","new content"),array("ori content","new content"),...);
        #$conf["replaceLike"],字串,預設為"false",代表要完全符合關鍵字才能進行整行替換;反之為"true".
        #$conf["replaceLike"]="false";
        #$conf["addToTailWhenNoMatch"],字串,預設為"false"不做事;若為"true",則代表若使用 "replaceWith" 參數但沒有符合條件的內容出現,則新增到檔案的尾端.
        #$conf["addToTailWhenNoMatch"]="false";
        #$conf["addToTailBeforeThat"],字串,當 "replaceWith" 參數有使用,且 "addToTailWhenNoMatch" 為 "true" 時,若有使用該參數,則會從尾端尋找符合條件的行內容,然後將 沒有符合 "replaceWith" 條件的內容新增在此之前.
        #$conf["addToTailBeforeThat"]="?\>";
        #$conf["replaceSpecifyLine"],字串陣列,將指定的行取代成指定的內容,元素的key為原始檔案的行索引,若key為$i+1,則代表第$i行;元素的數值就為該行的新內容.
        #$conf["replaceSpecifyLine"]=array();
        #$conf["outputPath"],字串,檔案要輸出到哪個位置,預設不指定,直接取代原始檔案的內容.
        #$conf["outputPath"]="";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function updateFile(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf===null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","file");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("file");
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("overWriteWith","replaceWith","addToTailWhenNoMatch","addToTailBeforeThat","replaceLike","replaceSpecifyLine","outputPath");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("overWriteWith","replaceWith","addToTailWhenNoMatch","addToTailBeforeThat","replaceLike","replaceSpecifyLine","outputPath");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","array","string","string","string","array","string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"false",null,null);
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查檔案是否存在
                #函式說明:
                #檢查多個檔案與資料夾是否存在.
                #回傳的結果:
                #$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
                #$result["error"],錯誤訊息陣列.
                #$resutl["function"],當前執行的涵式名稱.
                #$result["argu"],使用的參數.
                #$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
                #$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
                #$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
                #$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址
                #$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
                #必填參數:
                #$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
                $conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($conf["file"]);
                #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                $conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
                #可省略參數:
                #$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
                $conf["disableWebSearch"]="true";
                #$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
                $conf["userDir"]="false";
                #$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
                $conf["web"]="false";
                #參考資料:
                #http://php.net/manual/en/function.file-exists.php
                #http://php.net/manual/en/control-structures.foreach.php
                #備註:
                #函數file_exists檢查的路徑為檔案系統的路徑
                #$result["varName"][$i]結果未實作
                $checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
                unset($conf["fileAccess::checkMultiFileExist"]);

                #如果檢查參數失敗
                if($checkMultiFileExist["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #如果目標檔案不存在
                if($checkMultiFileExist["allExist"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行失敗訊息
                        $result["error"]=$checkMultiFileExist;

                        #回傳結果
                        return $result;

                        }#if end

                #預設要寫入的位置為原始檔案
                $file2write=$conf["file"];

                #如果有設置 outputPath
                if(isset($conf["outputPath"])){

                        #寫入檔案的路徑與名稱
                        $file2write=$conf["outputPath"]."/".$conf["file"];

                        }#if end

                #如果有設置 overWriteWith
                if(isset($conf["overWriteWith"])){

                        #函式說明:
                        #將多行字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行函數的名稱.
                        #必填參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱
                        $conf["fileAccess::writeMultiLine"]["fileName"]=$file2write;
                        #$conf["inputString"],字串陣列,爲要寫入到 $conf["fileName"] 裏面的內容. $conf["inputString"][$i] 代表第 $i+1 行。
                        $conf["fileAccess::writeMultiLine"]["inputString"]=$conf["overWriteWith"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeMultiLine"]["fileArgu"]=$conf["fileArgu"];
                        #$conf["fastWrite"],字串,“true”代表要一次寫入多行內容;預設為"false"代表一次寫入一行,比較安全,但行數一多會需要等待多時.
                        $conf["fileAccess::writeMultiLine"]["fastWrite"]="true";
                        #可省略參數:
                        #$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $writeMultiLine=fileAccess::writeMultiLine($conf["fileAccess::writeMultiLine"]);
                        unset($conf["fileAccess::writeMultiLine"]);

                        #如果執行失敗
                        if($writeMultiLine["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$writeMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得原始檔案的內容
                        #函式說明:
                        #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                        #回傳的變數說明:
                        #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
                        #$result["error"],錯誤訊息提示.
                        #$result["warning"],警告訊息.
                        #$result["function"],當前執行的函數名稱.
                        #$result["fileContent"],爲檔案的內容陣列.
                        #$result["lineCount"],爲檔案內容總共的行數.
                        #$result["fullContent"],為檔案的完整內容.
                        #$result["base64data"],為檔案的base64內容.
                        #$result["mimeType"],為檔案的mime type.
                        #必填參數:
                        #$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
                        $conf["fileAccess::getFileContent"]["filePositionAndName"]=$conf["file"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::getFileContent"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["web"],是要取得網路上的檔案則為"true";反之則為"false".
                        $conf["fileAccess::getFileContent"]["web"]="false";
                        #參考資料:
                        #file(),取得檔案內容的行數.
                        #file=>http:#php.net/manual/en/function.file.php
                        #rtrim(),剔除透過file()取得每行內容結尾的換行符號.
                        #filesize=>http://php.net/manual/en/function.filesize.php
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $getFileContent=fileAccess::getFileContent($conf["fileAccess::getFileContent"]);
                        unset($conf["fileAccess::getFileContent"]);

                        #如果執行失敗
                        if($getFileContent["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$getFileContent;

                                #回傳結果
                                return $result;

                                }#if end

                        #無窮迴圈
                        for($i=0;$i>=0;$i++){

                                #如果有舊或新的行內容存在
                                if( isset($getFileContent["fileContent"][$i]) || isset($conf["overWriteWith"][$i]) ){

                                        #初始化暫存舊行內容的變數
                                        $oriLine=null;

                                        #初始化暫存新行內容的變數
                                        $newLine=null;

                                        #如果存在原行內容
                                        if(isset($getFileContent["fileContent"][$i])){

                                                #儲存原行內容
                                                $oriLine=$getFileContent["fileContent"][$i];

                                                }#if end

                                        #如果存在新行內容
                                        if(isset($conf["overWriteWith"][$i])){

                                                #儲存新行內容
                                                $newLine=$conf["overWriteWith"][$i];

                                                }#if end

                                        #設置更新的資訊
                                        $result["content"][$i]=array("ori"=>$oriLine,"new"=>$newLine);

                                        }#if end

                                #反之
                                else{

                                        #結束迴圈
                                        break;

                                        }#else end

                                }#for end

                        }#if end

                #反之如果有設置 "replaceWith"
                else if(isset($conf["replaceWith"])){

                        #取得檔案的內容
                        #函式說明:
                        #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                        #回傳的變數說明:
                        #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
                        #$result["error"],錯誤訊息提示.
                        #$result["warning"],警告訊息.
                        #$result["function"],當前執行的函數名稱.
                        #$result["fileContent"],爲檔案的內容陣列.
                        #$result["lineCount"],爲檔案內容總共的行數.
                        #$result["fullContent"],為檔案的完整內容.
                        #$result["base64data"],為檔案的base64內容.
                        #$result["mimeType"],為檔案的mime type.
                        #必填參數:
                        #$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
                        $conf["fileAccess::getFileContent"]["filePositionAndName"]=$conf["file"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::getFileContent"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["web"],是要取得網路上的檔案則為"true";反之則為"false".
                        $conf["fileAccess::getFileContent"]["web"]="false";
                        #參考資料:
                        #file(),取得檔案內容的行數.
                        #file=>http:#php.net/manual/en/function.file.php
                        #rtrim(),剔除透過file()取得每行內容結尾的換行符號.
                        #filesize=>http://php.net/manual/en/function.filesize.php
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $getFileContent=fileAccess::getFileContent($conf["fileAccess::getFileContent"]);
                        unset($conf["fileAccess::getFileContent"]);

                        #如果執行失敗
                        if($getFileContent["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$getFileContent;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得原始檔案的每行內容
                        $oriFileContentByLine=&$getFileContent["fileContent"];

                        #針對每個 replaceWith 條件
                        foreach($conf["replaceWith"] as $replaceInfo){

                                #預設尚未找到符合的關鍵字
                                $foundKeyWord=false;

                                #取得要替換的目標字串
                                $oriStr=$replaceInfo[0];

                                #取得要替換成的字串內容
                                $newStr=$replaceInfo[1];

                                #針對每行原始內容
                                foreach($oriFileContentByLine as $index => $line){

                                        #函式說明:
                                        #檢查字串裡面有無指定的關鍵字
                                        #回傳結果:
                                        #$result["status"],"true"代表執行成功,"false"代表執行失敗。
                                        #$result["error"],錯誤訊息
                                        #$result["function"],當前執行的函數名稱.
                                        #$result["argu"],使用的參數.
                                        #$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
                                        #$result["keyWordCount"],找到的關鍵字數量.
                                        #必填參數:
                                        #$conf["keyWord"],字串,想要搜尋的關鍵字.
                                        $conf["search::findKeyWord"]["keyWord"]=$oriStr;
                                        #$conf["string"],字串,要被搜尋的字串內容
                                        $conf["search::findKeyWord"]["string"]=$line;
                                        #可省略參數:

                                        #如果要完全符合關鍵字
                                        if($conf["replaceLike"]==="false"){

                                                #$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
                                                $conf["search::findKeyWord"]["completeEqual"]="true";

                                                }#if end

                                        #參考資料:
                                        #無.
                                        #備註:
                                        #無.
                                        $findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
                                        unset($conf["search::findKeyWord"]);

                                        #如果執行失敗
                                        if($findKeyWord["status"]==="false"){

                                                #設置執行失敗
                                                $result["status"]="false";

                                                #設置執行失敗訊息
                                                $result["error"]=$findKeyWord;

                                                #回傳結果
                                                return $result;

                                                }#if end

                                        #如果有找到關鍵字
                                        if($findKeyWord["founded"]==="true"){

                                                #設置更新的資訊
                                                $result["content"][$lineIndex]=array("ori"=>$oriFileContentByLine[$index],"new"=>$newStr);

                                                #更新該行內容
                                                $oriFileContentByLine[$index]=$newStr;

                                                #設置有找到符合的關鍵字
                                                $foundKeyWord=true;

                                                }#if end

                                        }#foreach end

                                #如果沒有找到關鍵字
                                if($foundKeyWord===false){

                                        #如果要新增內容
                                        if($conf["addToTailWhenNoMatch"]==="true"){

                                                #如果有設置 addToTailBeforeThat
                                                if(isset($conf["addToTailBeforeThat"])){

                                                        #預設沒有找到符合的關鍵字
                                                        $foundKeyWord=false;

                                                        #初始化要記錄要 append 回去的各行內容.
                                                        $linesToAppend=array();

                                                        #倒敘,針對每行內容
                                                        for($i=count($oriFileContentByLine)-1;$i>=0;$i--){

                                                                #儲存要 append 回去的行內容
                                                                $linesToAppend[]=$oriFileContentByLine[$i];

                                                                #如果找到關鍵字了
                                                                if($oriFileContentByLine[$i]===$conf["addToTailBeforeThat"]){

                                                                        #設置有找到符合的關鍵字
                                                                        $foundKeyWord=true;

                                                                        #設置更新的資訊
                                                                        $result["content"][$lineIndex]=array("ori"=>$oriFileContentByLine[$i],"new"=>$line);

                                                                        #更新該行內容
                                                                        $oriFileContentByLine[$i]=$line;

                                                                        #倒敘陣列
                                                                        $linesToAppend=array_reverse($linesToAppend);

                                                                        #針對每行要 append 回去的內容
                                                                        foreach($linesToAppend as $lineToAppend){

                                                                                #append 行內容
                                                                                $oriFileContentByLine[]=$lineToAppend;

                                                                                #設置更新的資訊
                                                                                $result["content"][count($oriFileContentByLine)-1]=array("ori"=>null,"new"=>$lineToAppend);

                                                                                }#foreach end

                                                                        }#if end

                                                                }#for end

                                                        #如果沒有找到關鍵字
                                                        if($foundKeyWord===false){

                                                                #設置執行失敗
                                                                $result["status"]="false";

                                                                #設置錯誤訊息
                                                                $result["error"]="can't find \"".$conf["addToTailBeforeThat"]."\" to insert before it.";

                                                                #回傳結果
                                                                return $result;

                                                                }#if end

                                                        }#if end

                                                }#if end

                                        }#if end

                                }#foreach end

                        #函式說明:
                        #將多行字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行函數的名稱.
                        #必填參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱
                        $conf["fileAccess::writeMultiLine"]["fileName"]=$file2write;
                        #$conf["inputString"],字串陣列,爲要寫入到 $conf["fileName"] 裏面的內容. $conf["inputString"][$i] 代表第 $i+1 行。
                        $conf["fileAccess::writeMultiLine"]["inputString"]=$oriFileContentByLine;
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeMultiLine"]["fileArgu"]=$conf["fileArgu"];
                        #可省略參數:
                        #$conf["fileAccess::writeMultiLine"]["writeMethod"]="w";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                        #$conf["fastWrite"],字串,“true”代表要一次寫入多行內容;預設為"false"代表一次寫入一行,比較安全,但行數一多會需要等待多時.
                        $conf["fileAccess::writeMultiLine"]["fastWrite"]="true";
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $writeMultiLine=fileAccess::writeMultiLine($conf["fileAccess::writeMultiLine"]);
                        unset($conf["fileAccess::writeMultiLine"]);

                        #如果執行失敗
                        if($writeMultiLine["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$writeMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        }#if end

                #反之如果有設置 replaceSpecifyLine
                else if(isset($conf["replaceSpecifyLine"])){

                        #讀取原始檔案內容
                        #函式說明:
                        #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                        #回傳的變數說明:
                        #$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
                        #$result["error"],錯誤訊息提示.
                        #$result["warning"],警告訊息.
                        #$result["function"],當前執行的函數名稱.
                        #$result["fileContent"],爲檔案的內容陣列.
                        #$result["lineCount"],爲檔案內容總共的行數.
                        #$result["fullContent"],為檔案的完整內容.
                        #$result["base64dataOnly"],檔案的base64data.
                        #$result["base64data"],為在網頁上給予src參數的數值.
                        #$result["mimeType"],為檔案的mime type.
                        #必填參數:
                        #$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
                        $conf["fileAcceess::getFileContent"]["filePositionAndName"]=$conf["file"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAcceess::getFileContent"]["fileArgu"]=__FILE__;
                        #可省略參數:
                        #$conf["web"],是要取得網路上的檔案則為"true";反之預設為"false".
                        #$conf["web"]="true";
                        #$conf["createIfnotExist"],字串,預設為"false"代表檔案不存在也不需要建立;反之為"true".
                        #$conf["createIfnotExist"]="false";
                        #$conf["autoDeleteSpaceOnEachLineStart"],字串,預設為"false",不做額外處理;反之為"true"
                        #$conf["autoDeleteSpaceOnEachLineStart"]="false";
                        #參考資料:
                        #file(),取得檔案內容的行數.
                        #file=>http:#php.net/manual/en/function.file.php
                        #rtrim(),剔除透過file()取得每行內容結尾的換行符號.
                        #filesize=>http://php.net/manual/en/function.filesize.php
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $getFileContent=fileAccess::getFileContent($conf["fileAcceess::getFileContent"]);
                        unset($conf["fileAcceess::getFileContent"]);

                        #如果執行失敗
                        if($getFileContent["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$getFileContent;

                                #回傳結果
                                return $result;

                                }#if end

                        #針對每個要更新的行
                        foreach($conf["replaceSpecifyLine"] as $lineIndex => $newLineContent){

                                #設置更新的資訊
                                $result["content"][$lineIndex]=array("ori"=>$getFileContent["fileContent"][$lineIndex],"new"=>$newLineContent);

                                #更新行內容
                                $getFileContent["fileContent"][$lineIndex]=$newLineContent;

                                }#foreach end

                        #debug
                        #var_dump(__FILE__,__LINE__,count($getFileContent["fileContent"]));

                        #將變更寫入到檔案裡面
                        #函式說明:
                        #將多行字串寫入到檔案
                        #回傳結果:
                        #$result["status"],"true"表示檔案寫入成功,"false"表示檔案寫入失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行函數的名稱.
                        #必填參數:
                        #$conf["fileName"],字串,爲要編輯的檔案名稱
                        $conf["fileAccess::writeMultiLine"]["fileName"]=$file2write;
                        #$conf["inputString"],字串陣列,爲要寫入到 $conf["fileName"] 裏面的內容. $conf["inputString"][$i] 代表第 $i+1 行。
                        $conf["fileAccess::writeMultiLine"]["inputString"]=$getFileContent["fileContent"];
                        #$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
                        $conf["fileAccess::writeMultiLine"]["fileArgu"]=__FILE__;
                        #可省略參數:
                        $conf["fileAccess::writeMultiLine"]["writeMethod"]="w";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                        #$conf["fastWrite"],字串,“true”代表要一次寫入多行內容;預設為"false"代表一次寫入一行,比較安全,但行數一多會需要等待多時.
                        $conf["fileAccess::writeMultiLine"]["fastWrite"]="true";
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $writeMultiLine=fileAccess::writeMultiLine($conf["fileAccess::writeMultiLine"]);
                        unset($conf["fileAccess::writeMultiLine"]);

                        #如果執行失敗
                        if($writeMultiLine["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行失敗訊息
                                $result["error"]=$writeMultiLine;

                                #回傳結果
                                return $result;

                                }#if end

                        #debug
                        #var_dump(__FILE__,__LINE__,$writeMultiLine);exit(1);

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function updateFile end

        /*
        #函式說明:
        #輔助使用PHP內建的chmod函式.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函式名稱.
        #$result["argu"],使用的參數.
        #$result["cmd"],執行的指令.
        #$result["content"],執行的結果陣列,如果參數 "recursive" 跟 "excludeSelf" 都有設定的話,就會回傳該結果.
        #必填參數:
        #$conf["mode"],字串,要變成什麼權限.
        $conf["mode"]="";
        #$conf["target"],字串,需要變更權限的目標.
        $conf["target"]="";
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function chmod(&$conf){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],執行不正常結束的錯訊息陣列.
                #$result["simpleError"],簡單表示的錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可省略參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("mode","target");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                #$conf["skipableVariableCanNotBeEmpty"]=array();
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #備註:
                #無.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤資訊
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤資訊
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #將$conf["mode"]轉換為10進位的整數
                $conf["mode"]=(int)base_convert($conf["mode"],8,10);

                #變更 target 的檔案權限為代碼
                $chmod=chmod($conf["target"],$conf["mode"]);

                #如果改變檔案權限失敗
                if($chmod===false){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置錯誤訊息
                        $result["error"][]="改變 ".$conf["target"]." 檔案的權限資訊為 ".$conf["mode"]." 失敗,通常只有系統帳戶才能變更之.";

                        #回傳結果
                        return $result;

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function chmod end

        }#class fileAccess end

?>