Windows下Apache以FastCGI模式運行PHP

第一步:下載安裝的文件

1. Apache 版本 httpd-2.2.21-win32-x86-no_ssl.msi
2. mod_fcgid 版本 mod_fcgid-2.3.6-win32-x86.zip
3. MySQL 版本 mysql-5.5.19-win32.msi
4. PHP 版本 php-5.3.5-nts-Win32-VC6-x86.zipphp

提示:
1. 建議選擇無SSL功能的Apache版原本完成開發,咱們這裏使用了httpd-2.2.21-win32-x86-no_ssl.msi。
2. 建議選擇由Apache官方所提供的mod_fcgid 做爲FastCGI模塊。咱們這裏使用目前最新版本2.3.6。mod_fcgid官方地址
3. Windows下安裝MySQL就選擇.msi安裝包格式,咱們選擇了mysql-5.5.19-win32.msi ,雙擊根據嚮導安裝便可,簡單方便。
4. PHP咱們選擇用php-5.3.5-nts-Win32-VC6-x86.zip 這個版本。這個是nts(非線程安全)版本,是針對PHP的FastCGI安裝方式。html

第二步:安裝文件

1. 在要安裝的磁盤建一個文件夾。爲了之後管理方便咱們在D盤的根目錄下建立一個WAMP文件夾。 D:\WAMP(WAMP是 windows+apache+mysql+php的縮寫)。
2. 在WAMP文件夾下建立一個WWW文件夾,用來存放你的PHP網站程序。D:\WAMP\WWW。
3. 安裝Apache服務器,把Apache服務器安裝到 D:\WAMP\Apache 文件夾。具體Apache安裝過程能夠參考文檔 Apache安裝圖解
4. 把下載的php-5.3.5-nts-Win32-VC6-x86 解壓到 D:\WAMP\PHP 文件夾。
5. 安裝MySql數據庫,把MySQL安裝到 D:\WAMP\MySQL文件夾。具體MySQL安裝過程能夠參考文檔 MySQL安裝圖解mysql

第三步:配置 Apachesql

首先使用文本編輯工具(推薦 EditPlus )打開 D:\WAMP\Apache\conf\httpd.conf 文件,這個文件是Apache的配置文件,下面幾步都是在修改這個文件的內容。
要注意的是修改完 httpd.conf 文件需從新啓動Apache服務,新設置纔會生效。數據庫

1. 設置監聽端口apache

打開 httpd.conf 文件後,找到 Listen(大概在第46行),將它後面的數字改成8080,以下:windows

        Listen 8080

這個參數用來設置Apache服務器的監聽端口,通常默認爲80。修改成8080 是爲了不和Windows 2003系統的IIS端口號衝突,若是你沒有啓用IIS,也可使用默認的80端口號。瀏覽器

2. 修改網站存放目錄安全

咱們知道Apache默認的網站存放目錄爲Apache安裝目錄下的htdocs文件夾。當你更改網站存放目錄,就必須修改相應的Apache配置。
在配置文件 httpd.conf 中查找 DocumentRoot,將其修改成指向網站目錄的正確文件夾。咱們這裏改成服務器

DocumentRoot "D:/WAMP/www"

同時,查找 This should be changed to whatever you set DocumentRoot to,在它下面有行 ,將其修改成你本身配置的DocumentRoot 路徑。咱們這裏修改成:

<Directory "D:/WAMP/www">

3. mod_fcgid 配置

咱們將下載的 mod_fcgid-2.3.6-win32-x86.zip 壓縮包中的」mod_fcgid.so」文件複製到apache的」modules」目錄。

打開 httpd.conf 文件,在最後加入以下配置:

LoadModule fcgid_module modules/mod_fcgid.so<IfModule mod_fcgid.c>    AddHandler fcgid-script .fcgi .php    #php.ini的存放目錄    FcgidInitialEnv PHPRC "D:/WAMP/PHP"    # 設置PHP_FCGI_MAX_REQUESTS大於或等於FcgidMaxRequestsPerProcess,防止php-cgi進程在處理完全部請求前退出    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000    #php-cgi每一個進程的最大請求數    FcgidMaxRequestsPerProcess 1000    #php-cgi最大的進程數    FcgidMaxProcesses 5    #最大執行時間    FcgidIOTimeout 120    FcgidIdleTimeout 120    #php-cgi的路徑    FcgidWrapper "D:/WAMP/PHP/php-cgi.exe" .php    AddType application/x-httpd-php .php</IfModule>

修改DocumentRoot 路徑的配置爲:

<span><Directory "D:/WAMP/WWW">  </span>    Options Indexes FollowSymLinks <span style="color: #ff0000">ExecCGI  </span>    Order allow,deny      Allow from all      AllowOverride All  <span></Directory>  </span>

注意:上面紅色文字部分。在option中添加一個屬性ExecCGI

4. 修改目錄首頁文件

在配置文件 httpd.conf 中查找 DirectoryIndex index.html 將其修改爲:

DirectoryIndex index.html index.htm index.php

DirectoryIndex 指的是當客戶瀏覽器訪問的路徑是一個目錄時,Apache默認執行的文件。
以咱們所修改的爲例:當客戶瀏覽器訪問一個目錄時,Apache會去找該目錄下的index.html,若是沒有再找index.htm,尚未再找 index.php。都找不到則默認顯示該目錄下的文件列表。參考文檔:若是防止Apache顯示文件列表

第四步:配置PHP

打開PHP安裝目錄,即D:\WAMP\PHP,咱們能夠看到目錄下有兩個這樣的文件 php.ini-development 和 php.ini-production,第一個是開發使用的配置文件,第二個是生產環境的配置,由於咱們是在本機作開發,因此選擇前者。將php.ini-development複製一份到同目錄下,並更名爲 php.ini。這個php.ini 就是當前使用的配置文件,如下幾步都是在修改這個php.ini文件的內容。要注意的是,修改php.ini文件後需從新啓動Apache服務,新設置纔會生效。

1. 指定PHP擴展庫的存放目錄

在Windows下PHP的擴展庫一般以 DLL 形式存放在PHP的ext目錄中。
使用文本工具打開php.ini文件,查找extension_dir = 「ext」,也就是在 On windows 下面那一行。把它前面的分號」;」去除掉,改成以下:

        extension_dir = "D:/WAMP/PHP/ext"

extension_dir 表示PHP擴展庫的具體目錄,以便調用相應的DLL文件。

2. 開啓相應的擴展庫

默認狀況下許多PHP的擴展庫都是關閉的,好比默認PHP不支持鏈接Mysql數據庫,需開啓相應的擴展庫。
這裏咱們開啓一些經常使用的擴展庫。
查找 ; Windows Extensions(大概在941行),在它的下面是extension列表。
找到以下擴展:

        ;extension=php_curl.dll        ;extension=php_gd2.dll        ;extension=php_mbstring.dll        ;extension=php_exif.dll        ;extension=php_mysql.dll        ;extension=php_mysqli.dll        ;extension=php_pdo_mysql.dll        ;extension=php_pdo_odbc.dll        ;extension=php_sockets.dll        ;extension=php_xmlrpc.dll        ;extension=php_xsl.dll

把以上extension 前面的分號 「;」 去掉。若是你但願加載其它擴展模塊,方法相同,只要去掉前面的分號便可。
提示1:重啓Apache提示 「unable to load dynamic library……php_curl.dll」,加載php_curl.dll錯誤。解決方法是拷貝 PHP 目錄下的 libeay32.dll 和 ssleay32.dll 到 windows 目錄或 windows/system32 目錄下,只要是系統 Path 環境變量裏包含的路徑就能夠。若是不想拷貝,你也能夠直接把 PHP 路徑放到系統 Path 環境變量裏。 右擊個人電腦=>屬性=>高級=>環境變量=>系統變量裏有個Path,雙擊打開,把你的PHP路徑加個分號」;」再前面( ;D:\WAMP\PHP ),添加進去就OK了。重啓Apache再也不提示該錯誤。
提示2:Exif 擴展是用來顯示圖片的 exif 信息的,由於該擴展須要 mbstring.dll 支持,因此必須將 extension=php_exif.dll 這一行寫到extension=php_mbstring.dll 的後面。
提示3:若是PHP自帶的擴展庫不能知足你的須要,你能夠去 pecl.php.net 查找並下載你須要的庫。windows用戶能夠去 pecl4win.php.net 或者 http://downloads.php.net/pierre/ 下載已經編譯好的DLL文件,也能夠去http://museum.php.net/php5/ 載PECL集合壓縮包。
提示4:不少人在找php_zip.dll,其實從php5.3開始已經集成了zip擴展,你能夠用 找到zip擴展的說明。

3. 讓PHP支持短標籤

在 php.ini 配置文件查找 short_open_tag = Off (大概在266行)把它修改爲:short_open_tag = On 讓其支持短標籤。
php的代碼通常包含在的標籤內,設置 short_open_tag = On 以後,能夠寫成更簡潔的形式:。

4. 配置PHP的Session功能

在使用session功能時,咱們必須配置session文件在服務器上的保存目錄。咱們須要爲session創建一個可讀寫的目錄,這個目錄最好獨立於網站目錄以外。
這裏把目錄上建在了D:\WAMP\sessiontmp,而後在 php.ini 配置文件中找 ;session.save_path = 「/tmp」 (大概在1467行),去掉前面的分號」;」 ,改成以下:

        session.save_path = "D:/WAMP/sessiontmp"

5. 配置PHP的文件上傳功能

同session同樣,在使用PHP文件上傳功能時,咱們必需要指定一個臨時文件夾以完成文件上傳功能,不然文件上傳功能會失敗。
咱們創建一個可讀寫的目錄文件夾 D:\WAMP\fileuploadtmp,而後在 php.ini 配置文件中找到 ;upload_tmp_dir = (大概875行),修改成:

        upload_tmp_dir = "D:/WAMP/fileuploadtmp"

PHP默認上傳文件大小不超過2M,要想上傳大於2M的文件,請參考文檔 配置php.ini實現文件上傳功能

6. 設置時區

在 php.ini 配置文件查找 ;date.timezone = ,去掉前面的分號」;」 改成以下:

date.timezone = PRC

date.timezone是PHP5.1開始新增長的配置參數,用來設置時區。默認date.timezone是被註釋掉的,也就是默認時區是UTC格林威治標準時間。
咱們這裏改成 date.timezone = PRC(PRC,People’s Republic of China,中華人民共和國),也就是日期使用中國的時區。這樣能夠解決時間相差八小時的問題。

第五步:測試

將以下代碼保存爲index.php文件,放到D:\WAMP\WWW目錄下面。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">        <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title>測試服務器</title>        </head>        <body>            <div style="text-align:center; color:red">            <?php                $link=mysql_connect("localhost","<em>你的mysql管理帳號</em>","<em>你的mysql管理密碼</em>");                if(!$link) echo "MySQL數據庫 鏈接失敗!";                else echo "MySQL數據庫 鏈接成功!";                mysql_close();            ?>            </div>            <br/>            <?php phpinfo(); ?>        </body></html>
相關文章
相關標籤/搜索