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

  • 相关阅读:
    读书笔记之理想设计的特征
    一些javascript 变量声明的 疑惑
    LINQ 使用方法
    Google MySQL tool releases
    读书笔记之设计的层次
    EF之数据库连接问题The specified named connection is either not found in the configuration, not intended to be used with the Ent
    转载 什么是闭包
    javascript面向对象起步
    Tips
    数据结构在游戏中的应用
  • 原文地址:https://www.cnblogs.com/chateldon/p/3298219.html
Copyright © 2011-2022 走看看