[Nginx] Nginx install

透過官方 Mirror  來安裝最新版

使用 wget 取得與新增 APT-Key

wget -qO - https://nginx.org/keys/nginx_signing.key | sudo apt-key add

 

利用 add-apt-repository 將 Nginx Repo 加到 /etc/apt/sources.list

sudo add-apt-repository 'http://nginx.org/packages/ubuntu/ nginx'

 

更新套件列表,取回 Nginx 的最新版本後,進行安裝

sudo apt-get update -y
sudo apt-get install nginx -y

 

[PHP] Failed loading php_xdebug.dll

試用 PHPStorm 要設定 PHP Interpreter 時總是偵測不到 Xdebug

下 CLI 時發現載入發生錯誤

Calos@localhost:~$ php -i | grep xdebug
Failed loading C:/Bitnami/wampstack-7.0.7-0/php/ext/php_xdebug.dll

 

WAMP 懶人包貌似沒裝好

懶得重新安裝,從 Stack Overflow 爬到了 Xdebug 官方有線上分析工具

可以幫忙進行 Xdebug 的除錯,並提供修正方法

連結: https://xdebug.org/wizard.php

 

使用方法很簡單

只需要在 CLI 下執行 php -i 將輸出的 PHP Information 貼即可

 

以此圖為例

網站直接提供了對應到 PHP 7.0.7 的 Xdebug extension DLL 檔

也會告知你應該放在哪個目錄下, php.ini 要做哪些修正

照著做後重新啟動 service,就解決了

 

Reference:

  1. Stack Overflow: XDebug not loading on Windows 7 64 bit PHP 5.4
  2. Xdebug: Support; Tailored Installation Instructions

[MariaDB/MySQL] mysqldump include/exclude (ignore) specific table

備份資料庫其中一種方式是使用 mysqldump 指令,例如我要備份一個名為db1的資料庫:

mysqldump -u admin -p db1
# 參數說明
# -u: 使用者名稱
# -p: 密碼,指令enter後會要求輸入密碼,也可以直接將密碼連接在後面,如密碼為123456的話,參數改成 '-p123456' 後指令會直接執行,不會再次要求輸入密碼

 

若只要備份特定的資料表時,有三種方式

  1. 排除/忽略特定資料表 (Exclude / Ignore)

    使用參數 --ignore-table 去排除,需完整名稱 (即 database.table);多個 table 無法使用逗點 (comma) 串接,需個別指定。適用於排除少數資料表。

    mysqldump -u root -p123456 myDB --ignore-table=myDB.logs --ignore-table=myDB.users > dump.sql

     

  2. 指定資料表名稱 (Include)

    在資料庫名稱後面指定資料表名稱,可指定多個資料表;無法使用 * 去指定特殊的 prefix / suffix;適用於匯出少數資料表。

    mysqldump -u root -p123456 myDB table_1 table_2 table_3 > dump.sql

     

  3. 包含特定資料表前綴/後綴或特定 pattern 的資料表 (Include prefix / suffix / pattern)

    利用 sub command 在內層執行 SQL 先取得指定資料表名稱後,再執行外層的 mysqldump ,適用於資料表數量眾多,需匯出指定資料表也較多的資料庫。

    mysqldump -u root -p123456 myDB  $(mysql -u root -p123456 myDB -Bse "SHOW TABLES LIKE 'my_table_%'") > dump.sql

    一般情況下用 LIKE 語法就夠了,若情況特殊,用 REGEXP 語法去撈也是可行的,需注意 WHERE 的欄位是 `Tables_in_資料庫名稱`

    mysqldump -u root -p123456 myDB  $(mysql -u root -p123456 myDB -Bse "SHOW TABLES WHERE `Tables_in_myDB` REGEXP 'table_[0-9]+_[A-Za-z]+'") > dump.sql

 

Reference: http://stackoverflow.com/a/26514699/7521686

[PHP] 強制清除所有session

透過調整以下三種參數去清除不太即時,且還要改回設定

  • session.gc_probability
  • session.gc_divisor
  • session.gc_maxlifetime

 

Session預設是以檔案的形式存放在檔案系統中

透過刪除Session File也可以達到效果,且非常即時

缺點是無差別地圖砲,Server上所有網站的session都會被清掉

至於檔案是存放在/var/lib/php5

root@localhost [/var/lib/php5] [15:09] ls
total 148
drwxr-xr-x 6 root     root        55 Mar 18  2016 modules
-rw------- 1 www-data www-data     0 Jan 11 15:03 sess_0ds3e4m3r7lgjooltl9a3l55c5
-rw------- 1 www-data www-data     0 Jan 11 15:05 sess_0pdn79vvlmk49pocsog0lm1s04
-rw------- 1 www-data www-data    21 Jan 11 14:52 sess_181m0vk41kg4jpbptqqkomvu45
-rw------- 1 www-data www-data     0 Jan 11 15:03 sess_22hv9nrcie1dgklni03ici5rg1
-rw------- 1 www-data www-data     0 Jan 11 15:07 sess_2jf0i4ld55pvov4d24s103rjh3
-rw------- 1 www-data www-data    21 Jan 11 14:50 sess_2u8fsfnkp9a1fanfa7qnemlpf5
-rw------- 1 www-data www-data     0 Jan 11 15:04 sess_43511pnkfu8vmmjk5uk5fa53f4
-rw------- 1 www-data www-data    21 Jan 11 14:45 sess_45a6khgkcq4irmvsg43ok8k766
-rw------- 1 www-data www-data   593 Jan 11 15:05 sess_4tpqknfnmt5k8mqq6g0ompmda5
-rw------- 1 www-data www-data     0 Jan 11 15:05 sess_6kdp8fepotp0v1krkv41dcqeu0
-rw------- 1 www-data www-data   512 Jan 11 14:52 sess_78h12laa6erhi4gsfa3l4s0h06
-rw------- 1 www-data www-data   488 Jan 11 15:07 sess_7u31csrpr889ubarhitom72ij6
-rw------- 1 www-data www-data    21 Jan 11 14:50 sess_8f2s5i1fb6v59t4rb0eenet682
-rw------- 1 www-data www-data     0 Jan 11 15:04 sess_8m5mov1o5mkjt7vuf0td0ilv53
(以下簡略...)

 

其中有個modules目錄是存放一些PHP的元件

記得不要手誤去刪到

刪掉所有Session Files

root@locahost [/var/lib/php5] [15:09] rm -f sess_*
root@locahost [/var/lib/php5] [15:09] ls
total 1
drwxr-xr-x 6 root     root        55 Mar 18  2016 modules

 

重整網站後就會發現session全部都刷新了