php53curl
『壹』 如何配置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的「moles」目錄。
打開 httpd.conf 文件,在最後加入如下配置:
LoadMole fcgid_mole moles/mod_fcgid.so
<IfMole 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
</IfMole>
修改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-proction,第一個是開發使用的配置文件,第二個是生產環境的配置,因為我們是在本機做開發,所以選擇前者。將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"
『貳』 如何在一台windows的伺服器里安裝配置PHP+MYSQL環境
php5.3以下版本的安裝方法。
1、首先是下載PHP安裝文件和MYSQL安裝文件,不過請注意MYSQL有很多個版本,有社區版、標准版、企業版、集群版,其中只有社區版是免費的。
2、在伺服器上配置好IIS,這里推薦IIS7以上版本,控制面板-打開或關閉windows功能-萬維網服務-應用程序開發功能里選上對應就可安裝。
3、配置php環境:把php壓縮包解壓到C:\php目錄下面,然後找到php.ini-dist,把他更名為php.ini,
修改裡面的擴展目錄
extension_dir = 「C:\php\ext\」。
把以下擴展前面的分號去掉以啟用
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysql.dll
fastcgi.impersonate=1 默認為0,如果使用IIS,需要開啟
cgi.fix_pathinfo=1
cgi.force_redirect=0 默認開啟,如果使用IIS,可以將其關閉
其次指定extension_dir目錄和date.timezone,即
extension_dir = "C:/php53iis/ext"
date.timezone= Asia/Shanghai
4、然後把extension=php_mysql.dll前面的分號去掉,保存並把php.ini復制到系統Windows目錄下面。
5、然後依次打開電腦(右鍵)->管理->服務和應用程序->Internet信息服務(IIS)管理器,打開ISAPI和CGI限制,然後添加php的ISAPI的執行文件php5isapi.dll.
6、配置Mysql:把下載的mysql文件直接安裝即可,然後復制php目錄下面的libmysql.dll到系統Windows下面的System32目錄里。
7、重啟IIS,即完工。
當然還有一種方法是使用PHP Manager,步驟大致如下:
1、下載並安裝PHP Manager。
2、開啟IIS,會發現裡面多了一個PHP Manager圖標項了。
3、下載php並解壓到想要放置的位置,將php.ini-development改名為php.ini ,修改php.ini 查找data.timezone
修改為date.timezone = 「Asia/Shanghai」(這里必須改,不然會出警告) ,找到Windows Extensions開啟
所需模塊,如:php_curl.dll php_mysql.dll php_mysqli.dll php_xmlrpc.dll
php_curl.dll,去掉前面的 分號 保存就可以了。
4、回到IIS界面,雙擊PHP Manager後,點擊「Register new PHP
Version」,然後選擇好php目錄中的php-cgi.exe,然後php.ini就會為適合IIS7.5的配置默認給你生成好了。
5、在當前界面點一下「Check phpinfo()」就會出現PHPInfo頁面了!
『叄』 在 php curl返回
給你個我寫的curl方法。
/**
*curl模擬提交
*@param string $url 網址
*@param array/string $opt 提交參數
*@param string &$header 取回的頭信息
*@param string $redirect 是否重定向
*@param boolean $ssl 驗證https證書
*@return [type] 返回信息
*/
functioncurl($url,$opt='GET',&$header=null,$redirect=true,$ssl=false){
//初始化
$ch=curl_init($url);
//配置設置
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,$ssl);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,$ssl);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,$redirect);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); #返回結果
curl_setopt($ch,CURLOPT_HEADER,true); #顯示協議頭
if(is_array($opt)){
//轉小寫
$opt=array_change_key_case($opt,CASE_LOWER);
//POST
if(isset($opt['type'])&&strtoupper($opt['type'])=='POST'){
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,(isset($opt['data'])?$opt['data']:''));
}
//User-Agent
if(array_key_exists('ua',$opt))
curl_setopt($ch,CURLOPT_USERAGENT,$opt['ua']);
//Header
if(array_key_exists('header',$opt)){
curl_setopt($ch,CURLOPT_HTTPHEADER,(array)$opt['header']);
}
//Cookie
if(array_key_exists('cookie',$opt))
curl_setopt($ch,CURLOPT_COOKIE,$opt['cookie']);
//Referer
if(array_key_exists('referer',$opt))
curl_setopt($ch,CURLOPT_REFERER,$opt['referer']);
}else{
//僅POST
if(strtoupper((string)$opt)=='POST')
curl_setopt($ch,CURLOPT_POST,true);
}
$result=curl_exec($ch);
if(curl_errno($ch)){
$result=curl_error($ch);
}else{
//獲取頭長度
$length=curl_getinfo($ch,CURLINFO_HEADER_SIZE);
//取出頭信息
$header=substr($result,0,$length);
//去掉頭信息
$result=substr($result,$length);
}
//釋放
curl_close($ch);
return$result;
}