網絡技術日誌

關於 PHP, Linux, Open Source 及個人生活記載的網誌。

Entries for December, 2011

汽車保養週期

這是根據我自己的駕駛習慣整理出來的汽車保養週期,駕駛模式大約為 70% highway, 30% 市區,大多情況都不會滿坐,並溫和駕駛。這個保養週期會根據車種的不同及駕駛風格而有所區別: 機油及機油濾芯: 5000KM 或半年 ATF 波箱油: 20000KM 或 1 年 波箱隔: 50000KM 火咀: 15000KM (白金及長效型銥金可 100000KM 才換,競技型銥金則 20000KM) 風隔(空氣濾芯): 5000KM 水箱水: 20000KM 或 1 年 煞車油: 20000KM 或 2 年 電油隔(汽油濾芯): 50000KM

Comments Off

Linux 下編譯 Apache 的 mod_rewrite

要為 Apache 加載 mod_rewrite 模組,如果 Apache 並未安裝,可以在編譯時加上 –enable-rewrite 便可以,但如果 Apache 已經安裝好,而又不想重新編譯 Apache 的話,可以用以下方法: 1. 首先 cd 到 Apache 的源代碼目錄並到 mod_rewrite.c 檔案, 1. 在apache的源码安装目录中寻找mod_rewrite.c文件 # find ./ -name mod_rewrite.c      2. 進入 mod_rewrite.c 的目錄並用 apxs 編譯 mod_rewrite.c # cd PATH/to/mod_rewrite.c # /usr/local/apache/bin/apxs -c mod_rewrite.c # /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la   3. 編譯好 mod_rewrite.c [...]

Comments Off

Centos 安裝及設定 MRTG

MRTG 是一套十分出名的網路流量監察工具,它會透過 SNMP 協定取得網路流量資料,並以網頁介面輸出。要安裝 MRTG,需要安裝以下套件: mrtg: MRTG 的主程式 net-snmp: NET-SNMP 內建幾個 SNMP 工具,包括 snmpd 及 snmptrapd daemons 及文檔等。 net-snmp-utils: 內建一些 NET-SNMP 工具。 以下是在 Centos 安裝及設定 MRTG 的步驟: 1. 安裝 MRTG: 在 Centos 下輸入以下指令安裝所需套件: # yum install mrtg net-snmp net-snmp-utils   2. 設定 SNMP: 開啟 /etc/snmp/snmpd.conf,加入以下下一行:

Comments Off

service httpd does not support chkconfig 問題

在 Redhat 或 Centos 下手動編譯安裝 Apache 後,將 apachectl 放到 init.d 裡面,然後用 chkconfig 自動啟動,即以下動作會得出 service httpd does not support chkconfig 錯誤: # cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd chkconfig httpd on   service httpd does not support chkconfig 解決方法是開啟 /etc/rc.d/init.d/httpd,把以下兩行加入到第二行便完成了。 # chkconfig: 35 85 15 # description: Apache is a World Wide Web server.

Comments Off

Redhat/Centos 架設 DNS Server

安裝環境 Centos 5.7 http://yacnoss.blogspot.com/2008/07/dnsbind.html1. 安裝 DNS 所需套件: 只要用 yum 指令便可以一次過想所需的套件安裝。 # yum install bind bind-chroot bind-utils caching-nameserver   在預設的情況下 Centos 不會建立 named.conf,要用以下方法建立: # cd /etc grep -v ‘//’ named.rfc1912.zones > named.conf chown root.named named.conf chmod 640 named.conf   2. 更新 root.zone 到 ftp://rs.internic.net/domain/root.zone 下載最新的 root.zone 資料檔,然後放到 /var/named/var/named/ 裡面。 然後就可以用 /etc/rc.d/init.d/named start 啟動 DNS Server。 啟動後可以輸入以入指令測試 [...]

Comments Off

Linux — 將一個用戶的進程全部 kill 掉

當某個用戶使用過多系統資源時,可以用以下指令將他開啟的所有進程 kill 掉: kill -9 `ps -u USERNAME -o “pid=”` 使用上只要將以上指令的 USERNAME 改成用戶名稱。

Comments Off

Redhat/Centos Yum 安裝 MySQL 問題

今日在一台伺服器上升級 PHP 的版本,伺服器原來已經用 Yum 安裝了 MySQL,在手動編譯 PHP 時一直出現以下錯誤訊息: configure: error: mysql configure failed. Please check config.log for more information. 原來我在編譯 PHP 時用了錯誤的參數,原本我是用 “–with-mysql=/usr/”,要將這個參數改成 “–with-mysql-dir=/usr/” 才可以編譯成功。

Comments Off

找出隱藏的 process 及 port

很多 rootkits 用了一些隱藏技巧,用 netstat 也找不出來,這個時候可以用 chkrootkit 這類工具掃瞄,另外還可以用 Unhide 搜索是否有不尋常的 process 及 port。 Unhide 是一個輕巧的安全工具,可以找出 rootkit 所開啟的 process 或 TCP/UDP ports,除了 Unix 版本外,它還有 Windows 版本。 如果是使用 Redhat,可以到 pkgs.org 下載相應版本的 rpm 檔案裝。 在 Debian / Ubuntu 則較簡單,用 apt-get 安裝就好了。 # apt-get install unhide 至於使用上也是很簡單,一般上以下幾個指令就會搜索系統內隱藏的 process 及 ports: # unhide-posix proc # unhide-posix sys # unhide-tcp

Comments Off

升級 WordPress 後的亂碼問題

昨天將 WordPress 從 2.0.x 升級到 3.2.1 後發覺全站的中文變成亂碼,但恢復舊版本的 WordPress 又可以正常顯示,那就是設定的問題。 最根本的問題是原來的資料使用 latin 1 編碼,而 WordPress 預設是使用 UTF8 編碼,要徹底解決就要用 mysqldump 將資料匯出並修改編碼。 但不想這麼麻煩,反正一直用得好好的,找到一個最簡單的方法是開啟 wp-config.php,找到以下兩行然後注釋掉: // define(‘DB_CHARSET’, ‘utf8′); // define(‘DB_COLLATE’, ”);

Comments Off

PHP 取得用戶真實 IP

要用 PHP 取得用戶的 IP 十分容易,只要用 $_SERVER['REMOTE_ADDR'] 變數就可以知道用戶的 IP,但如果用戶使用了 proxy server 上網的話,$_SERVER['REMOTE_ADDR'] 只會得到 proxy 的 IP 地址。 以下方法會使用 $_SERVER["HTTP_CLIENT_IP"] 及 $_SERVER["HTTP_X_FORWARDED_FOR"] 解決這個問題: PLAIN TEXT PHP: <?php if (!empty($_SERVER["HTTP_CLIENT_IP"])){     $ip = $_SERVER["HTTP_CLIENT_IP"]; }elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){     $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }else{     $ip = $_SERVER["REMOTE_ADDR"]; }   echo $ip; ?>

Comments Off

PHP 的 is_file() 及 file_exists()

PHP 的 is_file() 及 file_exists() 都是用作檢查檔案是否存在,它們的分別是 file_exists() 輸入的參數是目錄也會回傳 TRUE,而 is_file() 則只會對檔案回傳 TRUE: PLAIN TEXT PHP: <?php $path ="/path/to/dir"; if(file_exists($path)){     echo "File Exists"; }else{     echo "File not Exists";   // 如果 /path/to/dir 目錄存在會回傳 TRUE ?> 但如果用 is_file(),即使 /path/to/dir 目錄存在,仍然會回傳 FALSE: PLAIN TEXT PHP: <?php $path ="/path/to/dir"; if(is_file($path)){     echo "File Exists"; [...]

Comments Off

MySQL 的流程控制

MySQL 有幾個流程控制的 functions,以下是它們的用法簡介: 1. CASE 它就如同其他程式語言的 switch: // Below will return zero SELECT CASE 0 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' ELSE 'no one' END; // Below will return true SELECT CASE WHEN 5>2 THEN 'true' ELSE 'false' END; 2. IF SELECT IF(expr1,expr2,expr3); // return yes SELECT IF(1

Comments Off

MySQL 的 Safe Update Mode

最近要更新 MySQL 資料表內其中一個欄位的所有資料,只是用以下這個 SQL 指令: UPDATE table_name SET field_name=0; 個 MySQL 回傳的錯誤訊息為: "You are using safe update mode and you tried to update a table without a WHERE clause that uses a KEY column." 查看一些資料後,原來 MySQL 在沒有 WHERE 或 LIMIT 條件下會拒絕執行 UPDATE 或 DELETE querey,即使是沒有 KEY column 的 WHERE 條件也會拒絕執行。 要解決就是將 MySQL 的 Safe Update [...]

Comments Off

刪除 tarball 內的檔案

如果想刪除 tarball 內的個別檔案,可以用 tar 指令實現,首先用以下指令查看 tarball 內的檔案內容: # tar -tvf test.tar 然後就可以用以下指令刪除檔案,以下會假設刪除 del_file.txt 檔案: # tar --delete -f test.tar del_file.txt 如果想一次過刪除多個檔案,也可以用 * 符號配合 --wildcards 選項: # tar --wildcards --delete -f test.tar 'del_file.*' 請注意,以上方法只支援 tarball 檔案,而並不支援 tar.gz 或 tar.bz2。

Comments Off

免費省電軟件 — Granola

Granola 是一套智能省電軟件,它可以在不影響電腦正常使用的情況下節省用電,原理就是當電腦閒置時使用較少的 CPU 資源,而且 Granola 支援 Windows 及 Linux 平台。 Granola 官方網站

Comments Off