本文目錄一覽:
- 1、如何在Windows系統編譯PHP
- 2、gearman怎麼在windows上編譯php擴展
- 3、windows下開發並編譯PHP擴展的方法
- 4、如何編譯windows nginx php
- 5、windows 可以編譯安裝php嗎
如何在Windows系統編譯PHP
首先要配置PHP環境,可以用集成的,XAMPP,wamp server都可以
然後用編譯軟件即可,可以用notepad++
編輯好放在apache的document root中,用瀏覽器訪問
gearman怎麼在windows上編譯php擴展
一.安裝前的準備
系統情況: Centos6.0 64位
下載Gearman-0.29(到目前為止,版本是gearmand-0.37,但是按照以下的辦法安裝不成功)
然後用yum安裝其他依賴庫
yum install uuidd libevent libevent-devel gcc44 gcc44-c++ libstdc++44-devel
yum install uuid uuid-devel
yum icu
接下來下載依賴庫Boost C++ 庫,因為boost庫版本必須大於1.39所以我們下載boost_1_51_0.tar.gz
下載php的擴展gearman-0.8.0(到目前為止,版本是gearman-1.0.3,但是按照以下的辦法安裝不成功)
解決“fatal error: uuid/uuid.h: No such file or directory”
安裝e2fsprogs
二. 開始安裝
編譯安裝Boost
tar xvzf boost_1_49_0.tar.gz
cd boost_1_49_0
./bootstrap.sh
./b2 install
(安裝編譯過程大概需要20分鐘)
windows下開發並編譯PHP擴展的方法
現在就簡單說一在WINDOWS下開發PHP擴展的步驟:
首先需要準備的軟件有:
cygwin
安裝路徑e:\app\cygwin
visual
studio
C++
6.0,
修改環境變量,把已經安裝好的PHP路徑設置為環境變量。在這裡,假設我的PHP安裝目錄是:e:\app\php5.2.5,那麼我把WINDOWS環境變量後面加上這個安裝目錄。方便一會兒使用php.exe。
PHP源代碼,這裡假設為e:\c_source_code\php-5.2.5
1、修改文件
“PHP源文件目錄/ext/ext_skel_win32.php”,在這裡就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路徑。$cygwin_path
=
‘e:\app\cygwin\bin’;
把$cygwin_path修改為你實際安裝cygwin的路徑。
2、在源代碼ext目錄也就是e:\c_source_code\php-5.2.5\ext下,執行
php
ext_skel_win32.php
–extname=EXT_NAME,此時會在ext目錄下生成EXT_NAME目錄,這個目錄就是我們將要進行PHP擴展開發的框架。比如你運行php.exe
ext_skel_win32.php
–extname=foo,會在ext目錄下生成foo目錄。
3、將php-root\dev\php5ts.lib拷貝至
“ext/EXT_NAME”中。比如你要開發的PHP擴展名為foo,那麼就需要把php-root\dev\php5ts.lib拷貝到PHP源文件目錄\ext\foo中。
4、修改foo.c內容,編寫我們需要的C代碼。
5、進入EXT_NAME目錄,打開EXT_NAME.dsp。
設置VC6工程,
設置菜單“組建”-“移除工程配置”,選中“Win
32
Release_TS”,
設置菜單“工程”,選中“Win
32
Release_TS”
打開Tab“連接”,設置“輸出文件名”中的目錄,
[可選]打開Tab“C/C++”,增加“預處理器定義”“,COMPILE_DL_EXT_NAME”(注意全大寫,默認加入的),取消預定義“LIBZEND_EXPORTS”(否則不可引入zend函數)。
6、設置好以後,進行編譯,會生成一個dll文件,文件名是EXT_NAME.dll,比如在我們的例子中就為foo.dll
把foo.dll拷到e:\app\ext目錄下,並在php.ini里加上一行extension=foo.dll,重啟一下apache,查看phpinfo();,會發現我們的PHP擴展foo()已經加載進來,已經可以使用這個foo擴展了。
如何編譯windows nginx php
作了N多次php環境的搭建,網上的方法還真是多,但是實際操作起來總有一些大大小小的出入,很多錯誤經常讓我糾結不已.久病成醫,漸漸地我自己就總結出了一些經驗。自我感覺良好。
這種方法並非以前所流行的apache 加 php_module 的方式運行,我是採用nginx 作為web服務器,以fastcgi的方式運行php。
linux下編譯:
nginx我還是習慣選擇8.54的版本,它的編譯依賴以下幾個軟件包,解壓這些源碼包,在configure中設置好這些源碼的路徑,nginx在編譯的時候會自己將他們編譯進去的:
pcre: 主要用於rewrite等模塊
zlib: 這個不用說了
openssl: 如果你還知道https這個東西,那麼你懂的~~~(當然你可以不需要這個功能)
md5 /sha1: 這兩者都是用於生成信息摘要的希哈算法,這倆個東西不是必須的,但是我發現如果不選擇其中一個那麼openssl是不會成功地編譯進nginx的
下面是我自己寫的一個安裝腳本,有temp-path字樣的編譯選項所設置都是nginx在運行時產生的臨時文件的路徑,pid-path,lock-path也是臨時文件路徑,log-path是日誌文件路徑,我因為自己機子上一些權限的問題所以要設置一下.一般情況下其實這些是不必要的,nginx默認會統統把生成的這些文件放在自己的安裝目錄下.
tmp=/tmp/nginx
log=/home/jsckdao/log
pcre=~/Downloads/pcre-8.02
zlib=~/Downloads/zlib-1.2.5-src
openssl=~/Downloads/openssl-0.9.8q
md5=~/Downloads/md5-1.3.0
./configure –prefix=/usr/local/nginx \
–http-proxy-temp-path=${tmp}/nginx-proxy.tmp \
–http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \
–http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \
–http-scgi-temp-path=${tmp}/nginx-scgi.tmp \
–http-client-body-temp-path=${tmp}/nginx-client.tmp \
–pid-path=${tmp}/nginx.pid \
–lock-path=${tmp}/nginx.lock \
–http-log-path=${log}/http.log \
–error-log-path=${log}/http-error.log \
–with-pcre=$pcre \ #pcre 源碼包的路徑
–with-zlib=$zlib \ #zlib 源碼包的路徑
–with-http_ssl_module \ #起用ssl支持
–with-openssl=$openssl #openssl 源碼包路徑
make
make install
php(5.2)的編譯可以複雜點,也可以簡單點,因為我們編譯php時主要目的是編譯它的腳本引擎和一些核心庫,很多外圍的東西不一定非要在編譯php的時候加進去,可以在需要的時候將它們編譯成擴展庫再修改配置文件來加載它們。
我的編譯代碼如下:
./configure –prefix=/usr/local/php \
–with-mysql=/usr/local/mysql \#設置mysql的安裝路徑
–enable-fastcgi \ #開啟fastcgi支持
–enable-debug #支持調試
make
make install
其實關於mysql的那一句都是可以不要的,只是我懶得再編譯一次mysql擴展,所以就這樣把它直接編譯進php了,這樣做的前提是你必須先安裝mysql。
令外還有一些注意事項:編譯php時必須確保系統中擁有libxml2與libxml2-dev這倆個軟件包,因為php默認會將xml的功能編譯進去,所以xml的支持是必不可少的。還有一個就是autoconf這條命令了,在編譯擴展的時候,phpize會調用系統中的這個命令來生成擴展包的configure文件,沒有它你就不能作擴展了,這一點也是要記住的,畢竟linux下的php不像windows版那樣事先把所有的擴展都編譯好了。
至於window下nginx,php的安裝就沒有什麼難度了,下個zip包,解壓就能用,只要稍微配置就可以了.
配置:
如果只是想讓php能運行的話那麼直接輸入命令:
./php-cgi -b 3344
這樣就開啟了php的fastcgi進程了,-b參數是綁定該進程的偵聽端口,隨便找個沒用的端口填就可以了,這裡綁定的是3344.
然後在nginx的配置文件中加上這麼幾行:
location ~ \.php$ {
root /home/jsckdao/www; #這是你網站的根目錄
fastcgi_pass127.0.0.1:3344; #這裡指定了fastcgi進程偵聽的端口,nginx就是通過這裡與php交互的
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
如果要改nginx的偵聽端口的話找到”listen”這麼一項,改就是了.運行nginx,在/home/jsckdao/www目錄中寫一個測試文件test.php:
?php
phpinfo();
?
訪問,如果顯示了php所以的配置信息,那麼就基本沒什麼問題,已經可以用這個環境寫些php代碼了.
至於php的調試器我選擇xdebug,不為什麼,習慣所致。加載xdebug時,在配置文件中的寫法根據系統的不同好像也有點不同。linux下是:zend_extension_debug=path,window中加載的dll有兩種,一種文件名會帶有ts的後綴,這種要這要樣寫:zend_extension_ts=path另外一種就這樣:zend_extension=path,path一定要寫絕對路徑。雖然ts為何意我也不是很清楚,但是這些設置是一定不可以搞錯的。
設置好後重新運行php-cgi,然後重新訪問test.php,如果有xdebug的那一塊出現了,那麼就成功了.
當然這是一個很簡單的配置,只能讓你運行php,要想真正做成你需要的開發環境,還需要你根據自己的需要修改php和nginx的配置文件,這些配置內容很多,我自己也在學習中,就不好多講了.
另外有一點需要注意,php的配置文件在它的源碼包中有兩個:php.ini-dist和php.ini-recommended,分別是針對生成環境和開發環境的配置.你需要把其中一個改名為php.ini.重啟後查看phpinfo()的頁面,靠上的地方有一項”Loaded Configuration File”,它的值如果就是你的php.ini的路徑,那麼就沒問題了,如果不是話,就看看上面一項”Configuration File (php.ini) Path”,你把你的php.ini文件移到這個目錄下在重啟就可以了.因為php默認會在這個路徑下尋找php.ini的.當然你也可以在運行php-cgi的時候設置你的php.ini路徑,比如這樣:
php-cgi -b 3344 -c /home/jsckdao/php.ini
這樣就是把/home/jsckdao/php.ini這個文件作為配置文件了.
按鈕!!
windows 可以編譯安裝php嗎
可以的,新手如果自己不會搭配環境的話,建議使用集成工具,phpStudy算是比較簡單的啦,樓主加油哦,有問題可以再追問
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/153868.html