跳到主要內容

發表文章

解決/opt/lampp/bin/mysql.server: 264: kill: No such process-無法啟用mysql的方法(CentOS)-教學撰寫:徐嘉裕Neil hsu

今天客戶突然告知學校的網站無法連線,我去看了一下LAMPP是啟用的,但MYSQL無法啟動,會顯示 /opt/lampp/bin/mysql.server: 264: kill: No such process 客戶說前幾天有跳電伺服器沒正常關機,按照經驗法則大概又是err在作怪,先輸入指令查一下客戶伺服器容量  df -l   結果如下圖   可以看到root 容量已到100%,然後問題又是mysql無法啟用,那就來找一下mysql的log資料夾看問題出在哪? /opt/lampp/var/mysql/ xxxxx. err 如果有發現紅字的 .err 檔案就是導致系統容量100%及MYSQL無法初始化的元凶,吧.err刪除後重啟LAMPP就能恢復正常了。 刪除err後再看一下容量,root 容量變為17% 重新啟動xampp,輸入指令: /opt/lampp/xampp restart 這樣MYSQL就恢復正常運作了,不過err還是需要處理不然很快root又要100%,可以先用root權限看一下.err裡面是哪些錯誤資訊,如果是 2021-04-12 8:33:48 13 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255). 我有寫一篇解決的方法可以參考看看 https://neohsuxoops.blogspot.com/2021/04/centosxamppmariadberr-error-incorrect.html 有需要的朋友參考看看。 工作心的撰寫: 徐嘉裕 Neil hsu

禁止返回上一頁JS程式(Firefox.IE.Chrome.Edge都兼容)-教學撰寫:徐嘉裕Neil hsu

在開發模組表單有時候會需要製作表單的填寫步驟,例如購物流程,問卷報名表之類的,每個流程都會儲存該流程的資料內容到程序完成,但如果USRE點了瀏覽器的返回上一頁可能會導致流程不完整或是程序出錯(例如金流串接等),所以必要時候選禁止瀏覽器返回上一頁是很重要的。 G大神有很多JS禁止返回上一頁JS程式分享,但有的Firefox有效Chrome又無效,不然就是ie無效實在很頭痛,經過測試寫了一個能兼容4種瀏覽器的function分享給大家,程式說明如下。 首先要使用JS的window.history.forward()來做操控瀏覽器歷史紀錄的功能! 作用機制如下圖 必須吧禁止返回上一頁JS程式放在A網頁,然後當表單送出進入B網頁時,B網頁就會產生禁止返回A網頁的效果 (若吧程式放置在B網頁是無效果的) 。 //JS-CODE->放置在JS程式裡面 //禁止返回上一頁 function prohibitpreviouspage(){ if(navigator.userAgent.indexOf('Firefox') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Firefox') + 8)) >= 3.6 ){ //Firefox setTimeout("fn_forward()",1); window.history.go(1); }else{ //IE.Chrome.Edge window.history.forward(); } } function fn_forward() { history.forward(); setTimeout("fn_forward()",1); } 然後再A網頁引入禁止返回上一頁JS程式 <script type="text/javascript" src="js/customize.js"></script> <script type="text/javascript">prohibitpreviouspage();</scr...

Xoops做一個php下載多檔打包壓縮成ZIP格式方法-教學撰寫:徐嘉裕Neil hsu

2021-11-15補充說明,由於PHP8.0對於new ZipArchive的寫法有改變,以下方法無法於PHP8.0中使用,如需使用PHP8.0開發Xoops模組zip下載功能的請參考這篇工作心得 Xoops做一個php8.0下載多檔打包壓縮成ZIP格式方法 之前寫過一個【 Xoops做一個php下載檔案自動壓縮成ZIP格式方法 】的工作心得,但那方法只能做單一檔案的ZIP下載打包,如果是多檔下載全部打包成一個ZIP檔,則需要修改一下程式才行,做成一個function方便使用,CODE如下。 //ZIP多檔打包下載 先做一個function丟到模組的function.php中方便重複使用 function  zipArchivefunction($url="",$zipname="",$temp="){ //$url 檔案原始路徑+檔名(陣列格式) //$zipname    zip檔案名稱 //$temp    檔案暫存路徑+檔名 $zip = new ZipArchive;   $zip->open($temp, ZipArchive::CREATE); //$url檔案路徑迴圈加入zip中 foreach ($url as $file) { $new_filename = substr($file, strrpos($file, '/') + 1);  //重新定義壓縮檔路徑 $zip->addFile($file, $new_filename); } $zip->close(); /********使用header命令php下載zip檔************/ header('Content-Type: application/zip'); //指定類型 header("Content-type: ".filetype("$temp")); //指定下載時的檔名 header("Content-Disposition: attachment; filename=".$zipname.""); //輸出下載的內容。 readfile($temp); unlink($temp); ...

用一層foreach解$_FILES['file']陣列(多檔上傳)存入資料表的方法->Xoops-教學撰寫:徐嘉裕Neil hsu

$_FILES['file']本身就是一個陣列,其底下包含了 $_FILES["file"]["name"]:上傳檔案的原始名稱。 $_FILES["file"]["type"]:上傳的檔案類型。 $_FILES["file"]["size"]:上傳的檔案原始大小。 $_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。 $_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。 共有五個key值組成的,如果是單一檔案上傳用foreach可以解出陣列中的五個參數值,也就是上傳檔案的基本參數。 如果是多檔上傳,那$_FILES['file']就會是陣列格式,用一層foreach是解不出來的,因為第一層只會解出$_FILES['file']的五個屬性值但仍為陣列型態,還要再用第二層foreach去解每個屬性的參數值,不過有個更簡單的方法用一層foreach就能解出來了,方法如下: //html <input type='file' class=' form-control' multiple name='file[]' id='file' > //php //建立檔案 if(!empty($_FILES['file']['name'][0])){  foreach($_FILES['file']['name'] as $key=> $val){  //以$_FILES['file']['name']來開啟迴圈,如果上傳三個檔案就會迴圈三次 $_FILES["file"]["name"][$key]: //可以得到上傳檔案的原始名稱迴圈值。 $_FILES["file"]["type"][$key]: //可以得到上...

解決mouseenter及mouseleave執行物件動畫未完成又重複觸發的問題-教學撰寫:徐嘉裕Neil hsu

如果要用jQuery的mouseenter(滑鼠滑入)及mouseleave(滑鼠滑出)來執行物件動畫,會遇到一個問題,假使mouseenter時物件因該要跑到left:80px的位置才算動畫完成,mouseenter則回到left:0px的位置,但在動畫未執行完成user又快速的在執行區塊滑入滑出,就會變成動畫亂跳的情況!! 舉例來說,像下面這張圖三個物件是尚未mouseenter觸發前的狀態 滑鼠滑入其中一個按鈕會觸發mouseenter動畫事件,物件往左上移動 滑鼠滑出執行區會觸發mouseleave動畫事件,物件往右下移動,返回原本位置 js-code應該是這樣 //mouseenter $("body").on("mouseenter", "#indexblocksbox01", function (){ $(this).css("cursor", "pointer"); $(this).css({"animation-name":"indexbox1","animation-duration":"0.4s","left":"160px","top":"53px"}); $("#title01btn").css({"animation-name":"indexbox2","animation-duration":"0.4s","background-color":"#FFFFFF","color":"#E77C00"}); }) //mouseleave $("body").on("mouseleave", " #indexblocksbox01", function (){ $(this).css("cursor", "...

php遞迴刪除資料夾及資料夾內容function->Xoops-教學撰寫:徐嘉裕Neil hsu

如果用PHP函數刪除目錄若目錄中有檔案,則會刪除失敗,使用rmdir()也只能刪空目錄,有資料的目錄是無法刪除,所以必須要先用程式吧目錄內的檔案全部刪除,最後再刪除目錄,這裡分享一個好用的遞迴刪除目錄及目錄內容的function,另外還加上了若刪除失敗則更改目錄檔名的function,兩個一起使用就沒問題了,CODE如下: 1、吧以下兩個function貼到Xoops模組的function.php裡面 //變更資料夾檔名 function changedirectory($changedate) { $date=date("Ymd"); if(!empty(rename($changedate, $changedate."_bak_{$date}"))) return true; } //刪除目錄包含內容物件 function fileunlink_r($from) { if (!file_exists($from)) {return false;} $dir = opendir($from); while (false !== ($file = readdir($dir))) { if ($file == '.' OR $file == '..') {continue;} if (is_dir($from . DIRECTORY_SEPARATOR . $file)) { fileunlink_r($from . DIRECTORY_SEPARATOR . $file); } else { unlink($from . DIRECTORY_SEPARATOR . $file); } } if(!empty(rmdir($from))) $returnvar=true; closedir($dir); return $returnvar; } 2、在執行刪除的php上引入這兩支php函式 //刪除資料夾及底下資料($from為刪除檔案目錄的實體路徑) $Filevar=fileunlink_r($...

升級upload 0.34的方法class.upload.php-教學撰寫:徐嘉裕Neil hsu

class.upload.php是一套超好用的PHP上傳檔案套件程式,能上傳圖檔及檔案,也能多檔上傳,本次心得記錄主要以舊版的class.upload.php升級到class.upload.php0.34版的修改紀錄為主,若要查詢class.upload.php如何使用可以去Google一下有很多教學喔! 首先去verot官網下載class.upload.php套件回來,選擇最新的0.34版 網址: https://www.verot.net/home.htm 下載回來後解壓縮,吧class.upload.php-master\class.upload.php-master\ src   <- 資料夾裡面的 ->class.upload.php ->lang 複製起來,貼到您網站或模組原本放置class.upload.php檔案的目錄位置覆蓋舊檔 然後在網站或模組找到引入class.upload.php程式上傳檔案function的地方(上傳參數設定那),裡面有一個類別為 $pic = new Upload($_FILES['upfile'], 'zh_TW'); 全部替換為 $pic = new \Verot\Upload\Upload($_FILES['upfile']); 這樣就完成upload 0.34的升級了,經測試原本中文檔名會上傳失敗的問題在upload 0.34都排除了,而且支援php7.3,真的非常好用,有需要的朋友參考看看! 工作心得撰寫: 徐嘉裕 Neil hsu