文章

CodeIgniter3 紀錄錯誤訊息

我們在做服務的時候在推出到正式機後會需要把錯誤訊息關掉,但是我們仍然需要知道到底正式機發生什麼事情了,這時候我們就需要把 log 記錄下來。 apache 裡面當然有已經可以紀錄的功能了,但是其實 CodeIgniter 有內建這樣的功能。讓我們來試試看吧!

php 寄送 email [SendGrid] 介紹

圖片
 我們在寄送 email 的時候要自己做一個  SMTP Server 超麻煩,而且還不一定會正常讓使用者收到,常常都會遇到擋信的問題,那我們如果要用 email 進行重要的行為,例如訂單的確認信或是註冊帳號的通知就會有影響了 現在要介紹的這個 SendGrid 就是一個第三方的發信服務,有很多的發信服務都有提供 php sdk 也有免費額度,為什麼我要特地介紹這個呢? 1. 有直接在 azure 上可以設定 2. 每月免費額度高達 25,000 (用得了超過這個數字,麻煩甘願一點付錢好嗎) 首先我們在 azure 後台上新增資源 搜尋 SendGrid 接著按照步驟一步一步走完即可 對!我不想寫過程了 單純填表格填一填就好 需要注意的是 1. 他的 php sdk 有支援 composer 同時你當然也是可以選擇在 github 直接下載進去使用 2. 要記得在 env 中設定你的 api 金鑰  3. 即便是有金鑰發信端的網頁伺服器還是需要被認證才能使用 認證方式有兩種,一種是認證發信人的 email 正確性,你只要在後台填寫後系統會發驗證信到你剛剛填寫的信箱。這種方式你就是只能拿這個 email 當發信人。 4.接著就可以快樂使用啦 附上sdk 網址 https://github.com/sendgrid/sendgrid-php

CodeIgniter 4 利用 helper 共用變數設定

圖片
CodeIgniter 中要在每個頁面共用變數一直都沒有一個很好的解法,在 CodeIgniter3 中我們可以在 Config 資料夾中建立一個檔案,塞一堆陣列利用 $this->config->item('foo') 來解決。 CodeIgniter4 中該怎麼解決呢? 我們可以利用 helper 的方法來解決: 檔案在 app/Helpers/ 這裡面我們可以建一個檔案,例如: 我們要取用的時候直接呼叫 __classlist() 就可以取出這個陣列了。 這樣做的好處呢,就是我們可以在這個 function 裡面加上一些語法而不是死板板的參數設定。在使用上會更有彈性喔

Certbot Let's Encrypt 快速發行證書套件 Centos版

我們之前有提到過可以用  Let`s Encrypt 得到免費憑證 。雖然也是很方便,但是現在已經可以用 yum 快速安裝摟。這個軟體叫做certbot certbot 基本上是沒有在預設的儲存庫中所以我們要先抓取回來 step1 sudo dnf install epel-release sudo dnf install certbot python3-certbot-apache mod_ssl 在上面出現紅字的部分 我們可以看到這是屬於 apache 版本,如果我們是 nginx 可以改用 sudo dnf install certbot python3-certbot-nginx  mod_ssl 直接可以執行摟 step2 sudo certbot 記得每三個月要更新憑證 certbot renew --dry-run

php 校正不必要或是錯誤的 html 格式 tidy

我們在做編輯後台的時候會開放讓使用者貼上自己想要的格式,但是很不幸的,大部分的情況下使用者都會從很奇怪的編輯軟體貼過來。 這時候如果遇到瀏覽器無法解析的時候就會變成原始碼被印在葉面上。或是整個大跑版。 php 其實就有 tidy 模組可以使用,他可以幫你改寫成正確的html format 通常的環境沒有預先安裝 所以我們先 install sudo yum -y install php-tidy sudo service httpd restart 接著使用也是很簡單 $config["show-body-only"]=true; $html = tidy_repair_string ($str, $config); tidy_repair_string 就可以幫我們校正了,需要注意的是 show-body-only 這如果沒有加 他會回傳整組的 html 包含 head 那些 其他我也不知道要幹嘛的用法

CodeIgniter 4 Libraries 引入使用方式

CodeIgniter 4 這個版本開始全面更新架購,所以原先的 libraries 引入使用的方式也要調整。 我們先由 Conntroller 說起。 <?php  namespace App\Controllers; use App\Libraries\Mylibraries; class Myfun extends BaseController{     function demo1(){         $lib = new  Mylibraries();            $data = $lib->function1();      } } ?> 接著就是 library 本身 <?php namespace App\Libraries; class Mylibraries{     function  function1(){          return 'hello lib';      } } ?> 我們可以看一下紅字的部份 重點都是在宣告 namespace 的路徑,路徑對了就可以。 另外就是 class 的引用這次開始要用 new 才能開始使用。

解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了 查了一下錯誤訊息的 log: Docs: https://docs.mongodb.org/manual   Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)   Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)   Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)   Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)  1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...  1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.  1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112  1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1  1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server. 看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作: