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.zip
提示:
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安裝方式。
第二步:安裝檔案
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安裝圖解。
第三步:配置 Apache
首先使用文字編輯工具(推薦 EditPlus )開啟 D:\WAMP\Apache\conf\httpd.conf 檔案,這個檔案是Apache的配置檔案,下面幾步都是在修改這個檔案的內容。
要注意的是修改完 httpd.conf 檔案需重新啟動Apache服務,新設定才會生效。
1. 設定監聽埠
開啟 httpd.conf 檔案後,找到 Listen(大概在第46行),將它後面的數字改為8080,如下:
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,在它下面有行 <Directoy 預設的DocumentRoot >,將其修改為你自己配置的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 路徑的配置為:
<Directory "D:/WAMP/WWW"> Options Indexes FollowSymLinks ExecCGI Order allow,deny Allow from all AllowOverride All </Directory>
注意:上面紅色文字部分。在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擴充套件,你可以用<?php phpinfo() ?> 找到zip擴充套件的說明。
3. 讓PHP支援短標籤
在 php.ini 配置檔案查詢 short_open_tag = Off (大概在266行)把它修改成:short_open_tag = On 讓其支援短標籤。
php的程式碼一般包含在<?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","你的mysql管理賬號","你的mysql管理密碼"); if(!$link) echo "MySQL資料庫 連線失敗!"; else echo "MySQL資料庫 連線成功!"; mysql_close(); ?> </div> <br/> <?php phpinfo(); ?> </body> </html>
然後在瀏覽器位址列輸入“http://localhost:8080/index.php”。可以看到結果。
相關文章
- win7下php7.1執行getenv('REMOTE_ADDR')fastcgi停止執行Win7PHPREMAST
- PHP 執行模式PHP模式
- PHP執行模式PHP模式
- Windows下安裝 Apache PHP Mysql RedisWindowsApachePHPMySqlRedis
- PHP CGI Windows下遠端程式碼執行漏洞PHPWindows
- 認識PHP執行模式PHP模式
- PHP五大執行模式PHP模式
- java在windows下執行JavaWindows
- PHP-FPM 的三種執行模式PHP模式
- 淺談PHP fastcgi和php-fpmPHPAST
- 如何在 Linux 中以指令碼模式執行 TopLinux指令碼模式
- CGI,FastCGI,PHP-FPM,PHP-CLI,modPHPASTPHP
- windows 2003 64位系統php執行報錯WindowsPHP
- standalone執行模式下 應用模式作業部署模式
- 白話 CGI,FastCGI,PHP-CGI,PHP-fpmASTPHP
- workerman / 小談PHP中的幾種執行模式PHP模式
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- 什麼是CGI、FastCGI、PHP-CGI、PHP-FPMASTPHP
- Php cli模式下執行報錯/usr/bin/php: /usr/local/lib/libxml2.so.2: no version information available (required by /usr/bin/php)PHP模式XMLORMAIUI
- Nginx、fastCGI、php-fpm關係梳理NginxASTPHP
- PHP執行sqlPHPSQL
- CGI、FastCGI、PHP-CGI和PHP-FPM 概念區分ASTPHP
- CentOS 7 下安裝 nginx + PHP 執行環境CentOSNginxPHP
- iis + php 遇到問題:php-cgi.exe - FastCGI 程式意外退出PHPAST
- windows伺服器apache、php、postgresql的環境安裝Windows伺服器ApachePHPSQL
- 如何在批處理模式下執行 top 命令模式
- 126 PHP目前比較常見的五大執行模式PHP模式
- 區分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGIPHPAST
- Windows下繫結執行緒到指定的CPU核心Windows執行緒
- windows下安裝python3.6.4完成,執行報錯WindowsPython
- laravel建立定時任務並在windows下執行LaravelWindows
- linux下Apache+PHP+MySQL安裝配置攻略LinuxApachePHPMySql
- Apache Flink on K8s:四種執行模式,我該選擇哪種?ApacheK8S模式
- Apache SSI 遠端命令執行漏洞Apache
- Apache + PHP配置ApachePHP
- 兩行命令解決 Windows 下 Homestead 執行緩慢的問題Windows
- php-cli和php-fpm FastCgi與PHP-fpm之間的關係PHPAST
- 簡單安裝PHP在Linux下的執行環境PHPLinux
- 多執行緒下指令重排與DCL單列模式執行緒模式