2015年3月24日 星期二

在 Windows 7 上安裝 Apache + PHP + PostgreSQL

http://yuanfarn.blogspot.tw/2013/06/windows-7-apache-php-postgresql.html

前幾天寫了篇 "在 Debian 上安裝 Apache + PHP + PostgreSQL"。這兩天突然想到,也許有些讀者只是單純想試試 Apache 和 PostgreSQL,於是乾脆也在自己的 Windows 7 上來試試如何安裝 Apache + PHP + PostgreSQL 了。
其實,在 Windows 7 上安裝也非常簡單,其中 Apache 和 PHP 只是將下載回來的壓縮檔解開,然後修改幾個設定即可。
安裝 Apache HTTP Server
Apache 目前最新的版本為 2.4.4,不過讀者可能會發現在 Apache 的網站 http://httpd.apache.org/ 上找不到 Windows 版的安裝程式,必須在 Apache Lounge (http://www.apachelounge.com/) 下載 Windows 的版本。
下載取得 httpd-2.4.4-win32.zip 這個檔案,然後將它解壓縮到 C:\,基本上會得到 C:\Apache24 這個目錄。
安裝 PHP
從 PHP 的網站 http://php.net/ 下載取得 PHP 5.4 (5.4.16) 的 VC9 x86 Thread Safe 版本,將它解壓縮並變更目錄名稱為 C:\php。
設定 Apache HTTP Server 與 PHP
從 PHP 5.4.10 這個版本之後,基本的設定如下:
首先編輯 C:\Apache24\conf\httpd.conf 這個檔案,然後加入以下幾行:
LoadModule php5_module "c:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
接著找到 Directory index 的設定,並加入 index.php 這項:
DirectoryIndex index.html index.php
向 Windows 註冊 Apache HTTP Server
以系統管理員的身份執行命令提示字元 (Command prompt),然後執行以下這行:
C:\apache24\bin\httpd -k install
接著再執行將它指定為手動啟動:
sc config Apache2.4 start= demand
不過通常我會將 demand 改成 auto,讓 Apache HTTP Server 自動啟動。
最後,將 C:\Apache24、C:\Apache24\bin 及 C:\PHP 這幾個路徑加到環境變數的 PATH 裡。
修改 PHP 的設定
在 C:\PHP 找到 php.ini-development 這個檔案,複製一份並更名為 php.ini,然後修改如下:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"

extension=php_pgsql.dll
基本上,要取消 PostgreSQL 這個 DLL extension 的註解。此外,也可以再取消幾個 extension 的註解,如下:
extension=php_bz2.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_mbstring.dll
命令提示字元 (Command prompt),執行以下這行確認載入的模組:
php -m
到這裡,基本上已經完成 Apache HTTP Server 與 PHP 的設定了,可以在 C:\Apache24\htdocs 編輯一個 info.php,填入以下內容:
<?php
phpinfo();
?>
然後,用瀏覽器開啟 http://localhost/info.php 查看。
安裝 PostgreSQL
從 PostgreSQL 的網站 http://www.postgresql.org/ 下載 Windows 版的安裝程式。根據網頁上的說明,將從 EnterpriseDB 的網站取得 9.2.4 版的安裝程式。
雙擊下載回來的 postgresql-9.2.4-1-windows.exe 安裝,並變更目錄到 C:\。因此,安裝完成會得到 C:\PostgreSQL\9.2 這個目錄。
在安裝過程依照說明設定資料庫管理員的密碼。
Windows 版本的 PostgreSQL 安裝程式會一併安裝圖形化的管理工具 pgAdmin III,在安裝後就可以直接用它來管理 PostgreSQL 了。

2015年3月22日 星期日

PHP上傳檔案,透過 PHP $_FILES 陣列輕鬆上傳檔案

http://www.webtech.tw/info.php?tid=24
http://gdsecret.com/post.php?id=15

php.ini設定

上傳檔案前總要做些設定吧,以下列出幾個設定供參考:
  1. file_uploads:檔案上傳 ,設為 On (允許上傳)
  2. upload_max_filesize:上傳最大檔案大小,預設 2M ,建議不要太大
  3. max_execution_time:最大程式執行時間,預設為 30 秒
  4. max_input_time:接收資料時間限制,建議比 max_execution_time 大
  5. memory _limit:最大記憶體,必須比 upload_max_filesize 大,檔案上傳才不會出錯
  6. post_max_size:POST資料量限制,預設 8M,必須比 upload_max_filesize 大

上傳檔案對 PHP 來說是個相當重要的功能,PHP 可以上傳各式各樣的檔案類型,像是文件檔 word 的 .doc、Excel 的 .xls、PowerPoint 的 .ppt、PDF、exe、影片檔案如 avi、rmvb、flv .... 圖片檔案類型等等。

上傳檔案最基本的架構有三個重點:
  1. 上傳頁面(HTML)
  2. 處理檔案(PHP)
  3. 儲存上傳檔案的資料夾
步驟一、先利用 HTML 建立一個簡單的上傳檔案頁面

這個頁面是要給上傳檔案的人看的,必須包含表單(form)、上傳檔案的欄位以及一個上傳按鈕。


開啟程式碼頁面

注 意表單 form 需要加上 enctype="multipart/form-data" 代表你要上傳檔案,input type="file" 這裡是上傳檔案的欄位。PHP 一次可以上傳多個檔案,這裡介紹單一檔案上傳,順利完成單一檔案上傳後,也可以嘗試看看多檔案上傳唷!

步驟二、建立一個資料夾來裝上傳的檔案

PHP 檔案上傳後會先放到一個暫存資料夾(tmp),再用 move_uploaded_file 將檔案移動到你的網站資料夾中,所以你必須建立好一個放檔案的資料夾在網站根目錄,我們暫時將這個資料夾命名為 upload。記得權限要設為可以寫入才能夠使用唷!通常預設是可以寫入,如果你待會上傳的檔案沒辦法寫入,就必須改一下資料夾權限。

步驟三、建立處理上傳檔案的 PHP 檔案 upload.php

在寫程式碼之前需要先了解 PHP 怎麼判斷檔案的各種數據
  • $_FILES["file"]["name"]:上傳檔案的原始名稱。
  • $_FILES["file"]["type"]:上傳的檔案類型。
  • $_FILES["file"]["size"]:上傳的檔案原始大小。
  • $_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
  • $_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
現在你了解了 PHP 如何判斷檔案上傳後的資料,接著就可以運用這些資料去做檔案上傳的功能囉!以下是檔案上傳的基本架構,你可以先透過這個架構看看檔案是否有問題,若有碰到什麼問題可以在這個階段先處理好。


開啟程式碼頁面

如果都沒有問題的話,接著我們開始加入「移動檔案到資料夾」的動作,此動作相當的重要,主要是將剛剛上傳到伺服器暫存資料夾的檔案正式移動到你的網站目錄底下,如此一來網友才看得到。

移動檔案請用 move_uploaded_file()

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);

將此 function 加到我們的程式碼中


開啟程式碼頁面

現在你已經可以將檔案上傳並順利移動到你的資料夾中囉!但是這樣其實並不完整,我們應該再加入檔案是否存在的判斷,避免有時候一個不小心重覆上傳相同的檔案,這裡可以採用 PHP 的 file_exists() 函式來判斷。


開啟程式碼頁面

相關連結

2015年3月18日 星期三

Find out biggest cpu/memory consuming processes with ps command

http://www.math-linux.com/linux/tip-of-the-day/article/find-out-biggest-cpu-memory-consuming-processes-with-ps-command

Biggest memory consuming processes

root@kali:~# ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head

 1.8  0.0  3304 gnome-panel

 1.3  0.2  3365 /usr/lib/vmware-tools/sbin64/vmtoolsd -n vmusr --blockFd 3

 1.3  0.0  3370 nautilus -n

 1.2  0.3  2642 /usr/bin/Xorg :0 -br -verbose -novtswitch -auth /var/run/gdm3/auth-for-Debian-gdm-0vVbZF/database -nolisten tcp vt7

 1.0  0.1  3468 gnome-terminal

 0.9  0.0  3377 nm-applet

 0.8  0.0  3371 gnome-screensaver

 0.8  0.0  3357 gnome-sound-applet

 0.8  0.0  3267 /usr/lib/gnome-settings-daemon/gnome-settings-daemon

 0.7  0.0  3458 /usr/lib/gnome-online-accounts/goa-daemon
 

Biggest cpu consuming processes

root@kali:~# ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head
0.1 26.4  5845 find / -name *fg*
1.8  0.0  3304 gnome-panel
1.3  0.3  3365 /usr/lib/vmware-tools/sbin64/vmtoolsd -n vmusr --blockFd 3
1.3  0.3  2642 /usr/bin/Xorg :0 -br -verbose -novtswitch -auth /var/run/gdm3/auth-for-Debian-gdm-0vVbZF/database -nolisten tcp vt7
1.3  0.0  3370 nautilus -n
0.9  0.1  3468 gnome-terminal
0.9  0.0  3377 nm-applet
0.8  0.0  3371 gnome-screensaver
0.8  0.0  3357 gnome-sound-applet
0.8  0.0  3267 /usr/lib/gnome-settings-daemon/gnome-settings-daemon


Explanations

- ps Report a snapshot of the current processes
- -e Select all processes
- o Specify user-defined format
- pmem,pcpu,pid,args user-defined format: memory,cpu, pid number and command
- | tail -n +2 Output lines starting to the second line (to avoid column names such %MEM, etc ...)
- | sort -rnk 1 reverse (r), numeric sort (n) by column 1 (memory)
- | sort -rnk 2 reverse (r), numeric sort (n) by column 2 (cpu)
- | head output the 10 first lines
Enjoy !!!

 
By myself: below is what I want and recommend
[root@vm-www ~]# pidstat | tail -n +4 |grep mysql | sort -rnk 6 | head -5