通常原因會是更新了 php 版本卻沒裝對應的 mysql package 試著將以下 package 安裝後,並重啟 nginx/php-fpm 即可 備註: x 為你所裝的 php 版本
前一陣子剛入門使用了 mac,也花點時間學了一些 mac 的快捷鍵就是 ….. 藉此機會紀錄一下在 mac 安裝 mysql, php及 phpmyadmin 我剛拿到的 macOS 版本是 10.12.3,可能有些東西比舊版預裝好了. 以下都會使用 brew 套件管理工具來安裝,我拿到這台電腦時已經預裝好 brew 了 還沒裝的可以參考官網說明安裝 首先先把 brew 的套件清單及套件更新: brew update brew upgrade 安裝及啟動 mysql: brew install mysql mysql.server start ps. mysql 的相關設定檔會在 /usr/local/opt/mysql/ mac 本身已經安裝了 apache 及 php,但 php 模組預設不開啟 開啟 apache 伺服器: apachectl start 這時候可以先試著連線 http://localhost/ 將 php […]
在使用 php 計算字串長度時,可能是計算字串所佔的位元(bytes),由於各編碼所佔的空間又大不相同,但通常我們需要的是計算這個字串真正的字數。 ps. 這邊我的預設主機編碼為 utf-8 從上面這個例子,我們可以看到的輸出都是 3 的長度。(主要是英文或符號在此都是以字元 1 byte 來儲存) 接下來我們看看混上一些中文 以上這個例子我們可以發現 strlen() 回傳 12 ,然而 mb_strlen() 回傳 6 才是正確的字數。 主要是因為 utf-8 編碼儲存中文時,每個字會是 3bytes (33 + 13 = 12),導致 strlen() 得到 12 的長度。 參考資料: http://expect7.pixnet.net/blog/post/44229026-%5B%E7%A8%8B%E5%BC%8F%5D%5Bphp%5D-strlen%E8%88%87mb_strlen%E9%83%BD%E6%98%AF%E8%A8%88%E7%AE%97%E5%AD%97%E4%B8%B2%E9%95%B7%E5%BA%A6%EF%BC%81
在預設的 php 設定檔中,會將 expose_php 這個選項設定為 On 這樣預設會讓 http(s) 的回應 header 顯示 x-powered-by: [伺服器 or php 版本資訊],其實並沒有任何實質上的幫助 除此之外,還可能會導致惡意的使用者利用此版本資訊做進一步的攻擊。 如下圖: 移除此 header 的方法: vim /etc/php5/apache2/php.ini # 編輯 php.ini 設定檔 ; 關閉 header 顯示 php 版本資訊 expose_php = Off sudo service apache2 restart # 重啟 apache,讓 apache 重新讀取 php 設定 這樣就可以移除掉 x-powered-by 這個敏感資訊的 header 囉! 參考資料: […]
PHP 裡面有幾個判斷變數值的函式 empty()、isset()、is_null() 來記錄一下差別和他們回傳的值~ isset() isset — Determine if a variable is set and is not NULL 判斷變數是否有被指定值並且不為null,包括宣告變數但未指派值。 empty() empty — Determine whether a variable is empty 判斷變數是否為空,以下情況即為空 “” (空字串) 0 (整數 0) 0.0 (浮點數 0.0) “0” (“0” string) […]