zoukankan      html  css  js  c++  java
  • 转:[Server] 在 Windows 上安裝 PHP 5.3 開發環境

    原文:http://www.jaceju.net/blog/archives/703/

    前陣子把部份測試主機環境升級到 PHP 5.3 來跑一些專案,整體上沒什麼狀況,所以我就決定讓公司的工作環境全部都轉移到 PHP 5.3 上了。

    本文主要介紹如何在 Windows XP 上建置 Apache 2.2 + PHP 5.3 + MySQL 5.1 的開發環境,以供有興趣的朋友參考。

    下載

    Apache 2.2

    Apache 2.2 可以在以下網址下載,因為我們多數網站都需要 SSL 支援,所以請記得抓取包含 OpenSSL 的版本。

    http://httpd.apache.org/download.cgi (Win32 Binary including OpenSSL)

    註:Apache 2.2 特色概觀

    PHP 5.3

    如果要讓 PHP 5.3 作為 Apache 2.2 的 module 來執行,那麼記得我們要抓取的是 VC6 x86 Thread Safe 的版本。

    而因為我們是要手動安裝,所以需要下載的是沒有安裝檔的 PHP 5.3 zip package ,可從以下網址找到:

    http://windows.php.net/download/ (VC6 x86 Thread Safe)

    MySQL 5.1

    MySQL 因為我們也要手動安裝,所以同樣也是用沒有安裝程式的 zip package ,可以從以下的網址下載:

    http://dev.mysql.com/downloads/mysql/5.1.html#win32 (Without installer)

    Xdebug 2.0

    這是開發 PHP 時很好用的除錯工具,可以從以下的網址下載:

    http://www.xdebug.org/download.php (Windows binaries: 5.3 VC6 (32 bit))

    註:不要下載到 Xdebug 2.0.4 版,這個版本會沒辦法被 PHP 載入。

    安排目錄結構並設定環境變數

    和之前一樣,我打算把相關的程式放在 D:AppServ 底下,以下是我所規劃的目錄結構:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    D:
    |
    |- AppServ (伺服器相關程式)
    |  |
    |  |- Apache2.2 ( Apache 的主要程式檔)
    |  |
    |  |- php ( PHP 的主要程式檔)
    |  |
    |  |- mysql ( MySQL 的主要程式檔)
    |  |
    |  |- data ( MySQL 資料檔)
    |
    |- WEB
    |  |
    |  |- wwwroot (預設網站的主要根目錄)
    |
    |- Temp
       |
       |- php (讓 PHP 存放暫存檔案的地方)
          |
          |- upload (上傳檔案的暫存位置)
          |
          |- session ( Session 檔的暫存位置)
          |
          |- xdebug ( Xdebug 分析檔的存放位置)

    這裡我會把預設網站的根目錄放在 D:WEBwwwroot ,各位可以依自己的喜好決定它的位置。

    接著把 Apache 、 PHP 及 MySQL 的執行檔所在路徑預先加入系統變數 PATH 裡,這樣方便到時候直接使用指令來設定服務,如下:

    1
    
    D:AppServApache2.2in;D:AppServphp;D:AppServmysqlin;%SystemRoot%....

    註:放在 D: (或其他非 C: 分割區) 的好處是不用擔心重灌後,資料及相關設定會消失。

    安裝 Apache 2.2

    第一次安裝

    首先執行 apache_2.2.xx-win32-x86-openssl-0.9.xx.msi ,大部份的都是直接選「 Next 」。不過特別注意安裝位置,這裡我會把它安裝在 D:AppServApache2.2 下,方法如下:

    1. 安裝到 Setup Type 時選 Custom ,並按 Next 。

    2. 把 Apache HTTP Server 2.2.xx 的 Install to 改到 D:AppServ ,這樣下方 Apache Runtime 的 Install to 會自動變成 D:AppServApache2.2 。

    至於其他選項就按照當時情況自行決定囉。

    註:這裡我假設各位已經不使用 IIS 了,所以後面的說明將會以 Port 80 為主。

    至於 Apache 的設定部份,我們在完成安裝 PHP 後再一起修改。

    重灌系統後的安裝

    假設我們的 D:AppServApache2.2 底下已經 Apache 的程式檔,只是重灌後使得系統設定消失。這樣的話,我們要先把D:AppServApache2.2in 加入系統變數 PATH 裡,接著再用以下方式重新建立服務 (粗體字部份) :

    1
    
    C:>httpd -k install -D Apache2.2

    最後用:

    1
    
    C:>httpd -k start

    來啟動服務。

    安裝 MySQL 5.1

    MySQL 安裝的步驟也很簡單:

    1. 將下載回來的 mysql-noinstall-5.1.xx-win32.zip 解壓縮到 D:AppServ 下,然後把 mysql-5.1.xx-win32 這個資料夾名稱改為 mysql 。

    2. 把 mysql/data 這個資料夾往上搬到 AppServ 資料夾下,這樣到時候更新 MySQL 版本時,就不用擔心會不小心覆蓋到資料庫。

    3. 複製 D:AppServmysqlmy-medium.ini (或其他) 為 my.ini 。

      註:寫這篇文章的時候, MySQL 最新的版本是 5.1.38 ,然後我用 –defaults-file 指定外部的 my.ini ,但卻一直無法讓 MySQL 啟動;因此我就放棄用外部 my.ini 了,直接讓 MySQL 抓取安裝目錄下的 my.ini 。

      然後找到 my.ini 裡的:

      1
      
      /tmp/mysql.sock

      改為:

      1
      
      D:/Temp/mysql.sock

      註:在 [client] 和 [mysqld] 區段裡各有一個,都要改。

      Temp 路徑請自行決定。

    4. 然後在 [mysqld] 下一行加入:

      1
      2
      
      basedir = "d:/AppServ/mysql"
      datadir = "d:/AppServ/data"

      以設定 MySQL 的執行路徑及資料庫存放路徑。

      註: MySQL 在 Win32 的新版本似乎在解析路徑上會有問題,所以磁碟機代號一定要小寫,而路徑分隔符號要用「 / 」。

    5. 接著在 DOS 命令列下執行:

      1
      
      C:>mysqld --install

      註: MySQL 5.1.21 以後的版本就沒有 mysqld-nt 這支程式了。

    6. 然後再執行:

      1
      
      C:>NET START MYSQL

      或用服務管理員來啟動 MySQL

    7. 如果要移除服務,就用:

      1
      
      C:>mysqld --remove

    這樣就能完成 MySQL 的安裝了。

    安裝 PHP 5.3

    安裝程式部份

    1. 將下載回來的 php-5.3.x-Win32.zip 解壓縮到 D:AppServphp 底下。

    2. 將下載回來的 php_xdebug-2.0.x-5.3-vc6.dll 複製到 D:AppServphpext 底下。

    3. 把 D:AppServphpphp.ini-development 複製成 php.ini ,然後將它放到 D:AppServ 底下。

    4. 將以下內容存成 IniFilePath.reg ,然後執行:

      1
      2
      3
      
      Windows Registry Editor Version 5.00
      [HKEY_LOCAL_MACHINESOFTWAREPHP]
      "IniFilePath"="D:\AppServ\"

      這會讓 PHP.exe 在執行時,知道要到哪裡去找 php.ini 。

    5. 如果透過 IniFilePath.reg 無法成功讓 Command Line 模式取得 D:AppServphp.ini 時,那麼就要改用 PHPRC 這個系統環境變數。 PHPRC 指的是 PHP Runtime Configuration ,也就是 PHP 執行時期的配置。做法是在系統環境變數中,加入 PHPRC 這個變數,其值為 D:AppServ 就可以了。

    修改 php.ini

    因為我們要建立開發環境,所以像錯誤訊息、 Xdebug 等相關偵錯用的機制都要打開,請修改以下的設定:

    1
    
    error_log = "D:/Temp/php/error.log" (要記得拿掉前面的分號註解)

    PHP 5 以後需要預先設定 timezone ,否則程式會一直出現警告。請找到 date.timezone ,並修改如下:

    1
    
    date.timezone = Asia/Taipei

    另外一些上傳的設定也要一起修改:

    1
    2
    
    post_max_size = 100M (這裡請自行決定大小)
    upload_max_filesize = 50M (通常會比 post_max_size 小)

    接下來是相關的路徑:

    1
    2
    3
    4
    
    upload_tmp_dir = "D:Tempphpupload" (上傳暫存路徑)
    include_path = ".;D:AppServphppear" (加入 PEAR 的引用路徑)
    session.save_path = "D:Tempphpsession" ( Session 暫存路徑)
    extension_dir = "D:AppServphpext" (extension 載入路徑)

    然後是常會用到的延伸套件的部份 (把前面的分號註解去掉即可) :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_pdo_mysql.dll ( Zend Framework 建議使用 PDO)
    extension=php_pdo_sqlite.dll
    extension=php_sqlite.dll
    extension=php_sqlite3.dll

    其他套件則視狀況加入。

    最後我們要把 Xdebug 加入,也就是在 php.ini 的最後加入以下設定:

    1
    2
    3
    4
    5
    6
    7
    
    [Xdebug]
    zend_extension="D:AppServphpextphp_xdebug-2.0.x-5.3-vc6.dll"
    xdebug.profiler_enable=on
    ;xdebug.show_exception_trace=on
    xdebug.show_local_vars=on
    xdebug.trace_output_dir="D:/TEMP/php/xdebug"
    xdebug.profiler_output_dir="D:/TEMP/php/xdebug"

    修改 httpd.conf

    讓 Apache 認識 PHP

    上面雖然安裝好了 PHP ,但是 Apache 還不認得 PHP 長什麼樣子,以下我們要修改 D:AppServApache2.2confhttpd.conf 來讓 PHP 變成 Apache 的模組。

    把以下設定加到 httpd.conf 的最後面:

    1
    2
    
    LoadModule php5_module D:/AppServ/php/php5apache2_2.dll
    AddType application/x-httpd-php .php

    或是分別放在 LoadModule 及 AddType 區段 (用搜尋即可找到) 。

    然後修改 DirectoryIndex ,加入粗體字部份:

    1
    
    DirectoryIndex index.html index.htm index.php

    這樣 Apache 2 就會以 Module 模式來執行 PHP 了。

    如果 Apache 找不到 php.ini ,那麼可以再加入以下指令:

    1
    
    PHPIniDir "D:/AppServ/php"

    其他設定

    接著有些設定要修改,首先是加入 mod_rewrite 模組 (去掉井字號註解即可) :

    1
    
    LoadModule rewrite_module modules/mod_rewrite.so

    然後修改預設網站的根目錄,也就是把:

    1
    
    D:/AppServ/Apache2.2/htdocs

    全部改成:

    1
    
    D:/WEB/wwwroot

    最後要啟用 .htaccess ,找到:

    1
    2
    3
    4
    
    <Directory />
    Options FollowSymLinks
    AllowOverride None
    </Directory>

    把 None 改成 All 。

    而 <Directory "D:/WEB/wwwroot"> 區段裡的 AllowOverride None 的 None 也改成 All 。

    測試

    測試前請先重新開機,讓所有的設定能生效。

    測試有沒有安裝成功的方式很簡單,只要在 D:WEBwwwroot 下建立一個 index.php 檔,然後寫入以下內容:

    1
    2
    
    <?php
    phpinfo();

    然後用瀏覽器查看 http://localhost/ ,如果有顯示 PHP 的相關設定資訊就算成功了。

    當然我們也能透過 phpinfo() 查看相關 PHP 套件是不是有安裝成功,如果沒有的話,請看下面的常見問題。

    常見問題

    1. 問:為什麼改了 php.ini 或 httpd.conf 後,畫面重整後還是沒有任何改變?

      答:因為要重新啟動 Apache 服務。

    2. 問:為什麼重新啟動了 Apache 服務,有些 PHP 的套件還是沒有載入?

      答:Apache 似乎會快取系統變數 PATH (猜想),所以要重新開機才能讓 Apache 知道 PATH 路徑,並正確載入這些套件。

    3. 問:為什麼 PHP 的路徑要加在 PATH 的最前面?

      答:Apache/PHP 會以 PATH 的先後順序來尋找相關檔案,所以這樣會避免掉一些檔案版本衝突的問題。

    4. 問:為什麼不在 httpd.conf 裡加入「PHPIniDir "D:/AppServ/"」來指定 php.ini 的位置?

      答:當然也可以採用這樣的方式來指定 php.ini 的位置,只是這裡我為了在 DOS 模式下也可以使用 D:AppServphp.ini ,所以才會利用 Registry 的方式。不然我們也可以在每次執行 DOS 底下的 PHP 時,使用以下指令:

      1
      
      C:> php -c d:AppServ test.php

     2009-09-07  Windows

  • 相关阅读:
    poj 1840 简单哈希
    poj 2151概率dp
    poj 3349 简单hash
    poj3274 hash
    poj 1459 最大流 Dinic模板题
    poj 3436 最大流-拆点
    poj 3020 二分图最大匹配
    poj 1094 简单拓扑排序
    poj3687 反向建图拓扑排序
    poj 3267
  • 原文地址:https://www.cnblogs.com/chateldon/p/3298219.html
Copyright © 2011-2022 走看看