PHP 內建的 Web Server

PHP 從 5.4 開始內建簡單的 Web Server, 主要用作開發環境測試用途。比起以往要安裝 Apache 及 PHP 簡單方便得多, 但不知道跟用 Apache + PHP 的環境差異有多大。 啟動 PHP Web Server 指令: php -S localhost:80 -t 執行後便會出現以下信息: PHP 5.4.0 Development …

RHEL / CentOS 隱藏進程

以往用 mysqldump 備份 MySQL 自動備份時, 例如之前分享的 MySQL 備份 Shell Script 及 Perl Script 自動備份 MySQL, 當 mysqldump 備份時, 如果其他使用者可以執行指令, 可以用 ps aux 看到 mysql 的密碼。要禁止一般使用者用 px -aux 查看其他使用者的進程 (process), …

PHP: 改變 file_get_contents() User-Agent

PHP 的內建函式 file_get_contents() 除了可以讀取本地檔案外, 也可以擷取遠端網頁, 但有些時候會還到 403 Forbidden 情況, 原因是網站伺服器會讀取 user-agent, 判斷是否瀏覽器正常訪問。 一般上網站會用 user-agent 判斷訪客的瀏覽器或 OS, 例如手機訪客所看到的網頁跟 desktop 有所不同。而封鎖像 PHP 的 file_get_contents() 之類的非正常瀏覽 user-agent, 可以減少伺服器的負荷及外部的 DDOS 攻擊。 要解決這個問題, 可以在 …

Perl 印出顏色文字

在寫 Perl Script 時通常我會將錯誤訊息用紅色顯示, Warning 用黃色, 執行正確用錄色, 看似沒什麼用, 但其實很方便, 不用細心看輸出內容就可以知道有沒有錯誤。在另一篇文章 Shell Script 輸出顏色文字 介紹了在 Shell Script 輸出顏色文字的方法, 但這個方法並不好記, 因為顏色碼是數字, 通常用過就會忘記。 Perl 要印出顏色文字同樣可以用上面提及的顏色碼, 但另一個更方便的做法是用內建的 ANSIColor 模組, 用 ANSIColor 的好處是不用記顏色碼, 直接用顏色的英文名稱即可, …

Linux 查看及轉換檔案編碼

Linux 下要查看檔案的編碼有多種方法, 以下會用 file 指令查看檔案的編碼。例如查看 php.ini 檔案的編碼: $ file -i php.ini php.ini: text/plain; charset=us-ascii 上面可以看到 php.ini 檔案是純文字檔, 編碼是 us-ascii, 如果不想輸出檔案名稱, 只要得出檔案類型及結果, 可以加入 -b 參數: $ file -bi php.ini text/plain; …

sudo 不用密碼設定

想要執行 sudo 指令時不用輸入密碼,可以用 visudo 設定: 1. 執行 visudo 編輯 sudo 設定檔: sudo visudo 2. 開啟了 /etc/sudoers (不要用 vi 直接開啟,要做上面的方法,建議執行 visudo) 後,假設用戶名稱是 user123, 找到這行: user123 ALL=(ALL) ALL 改成 user123 ALL=NOPASSWD: …

Shell Script 讀取檔案後逐行印出

在 Shell Script 要讀入檔案內容,並一行一行地做處理,或者簡單一行一行印出內容,可以用 read 語法,具體做法是: read_line.sh 上面的 Shell Script 會讀入指令模式輸入的檔案,沒有做任何資料處理,只簡單地逐行印出內容。 使用上,上面 shell script 名為 read_line.sh, 要先給予可執行權限,在指令模式是這樣做: chmod +x read_line.sh ./read_line.sh /etc/passwd 上面就會將 /etc/passwd 傳送給 read_line.sh, 而 read_line.sh 則讀取其內容並逐行印出。雖然這樣看起來沒什麼用處,因為用 …

MySQL 語法 – INSERT … ON DUPLICATE KEY UPDATE

有時在 MySQL 新增資料時, 會先判斷資料是否存在, 如果資料不存在會執行 INSERT 語句, 如果資料存在則用 UPDATE 語句。以前要這樣做, 需要先用 SELECT 判斷, 就像這樣: 雖然可以完成上面提到的任務, 但寫程式時就會較麻煩, MySQL 提供了 INSERT … ON DUPLICATE KEY UPDATE 語句, 可以一行就完成, 無需用 IF 及 …

Perl 讀入管線 (pipe) 輸入

Linux 下的管線 (pipe) 很實用,可以將多個指令一同執行,如果在 Perl Script 想讀取 pipe 輸入,可以用 符號,這樣就可以將 Perl Script 寫到像 Linux 下的指令那樣運作,寫法也十分簡單,就這樣: testing.pl 以上程式碼會讀入 pipe 輸入,然後逐行印出,在指令模式這樣做: cat /etc/fstab | testing.pl 上面的指令將 cat /etc/fstab 的輸出導入到 testing.pl。