導航:首頁 > 編程語言 > 自己寫php擴展

自己寫php擴展

發布時間:2024-07-10 11:31:19

㈠ 濡備綍鍦ˋzure Websites涓涓篜HP娣誨姞鑷瀹氫箟鎵╁睍

閫氳繃phpinfo(),鎴戜滑鍙浠ュ緱鍒癆zure Websites鑷甯︾殑PHP鎵╁睍搴撶殑鍒楄〃銆傚傛灉鎴戜滑闇瑕佹洿澶氱殑鎵╁睍錛岄渶瑕侀氳繃濡備笅姝ラゆ坊鍔狅細

灝bin鐩褰曟坊鍔犲埌璇ュ簲鐢ㄧ▼搴忕殑鏍圭洰褰(wwwroot)

灝嗘墿灞曞悕涓.dll鐨勬枃浠剁疆浜bin鐩褰曚腑錛堜緥濡傦紝php_mongo.dll錛夈傜『淇濇墿灞曚笌榛樿ょ増鏈鐨 PHP鍏煎癸紝騫朵笖鏄 VC9 鐗堟湰涓斾笌闈炵嚎紼嬪畨鍏 (nts) 鍏煎廣

閮ㄧ講搴旂敤紼嬪簭銆

瀵艱埅鍒 Windows Azure 闂ㄦ埛涓鐨勭綉絝欑殑浠琛ㄦ澘錛屽苟鍗曞嚮鈥滈厤緗鈥濄

㈡ 如何擴展PHP的IMAP模塊

如果對php進行模塊擴展,重新編譯PHP,這個過程比較痛苦,我的方法都是採用編譯模塊為*.so的方式,簡單,方便,不用去其他地方找模塊源碼包,php源碼自帶了。

1、進入安裝目錄
cd /path/ext/imap
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config

就是到這步報錯了,如果你碰到這樣的錯誤:
This c-client library is built with Kerberos support.
Add --with-kerberos to your configure line. Check config.log for details

utf8_mime2text() has new signature

以上2個錯誤都是由於缺少 libc-client-* 軟體包引起,由於我是Centos系統,就直接yum升級吧
yum -y install libc-client-*

安裝完畢後,再次編譯,
./configure --with-php-config=/usr/local/webserver/php/bin/php-config

這次的錯誤不一樣,如下:
configure: error: Kerberos libraries not found.
Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr )

既然提示少參數,就加上該參數吧,
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-kerberos=/usr

注意:這里有3個路徑可以選擇,於是就一個一個試一下,很幸運的是前面2個都不能編譯通過,只有 --with-kerberos=/usr 可以,但是還是有報錯,如下:
This c-client library is built with SSL support

看來離希望越來越近了,於是就加上 --with-imap-ssl=/usr 參數,終於編譯通過了,真不容易。

最後完整的編譯 imap 模塊參數如下:
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-kerberos=/usr --with-imap-ssl=/usr
make
make install

㈢ 如何編譯安裝PHP擴展

一開始安裝PHP的時候,我們並不知道需要哪些擴展,所以只有等到我們真正用到的時候才想辦法去安裝。
安裝PHP擴展最簡單的辦法就是
sudo apt-get install php5-xxx

但有的時候並非我們所願,源裡面並沒有我們需要的擴展,這時候就需要我們下載源碼自己編譯安裝了。
這篇文章中我將介紹在本地Linux平台下編譯安裝PHP擴展的方法。
現在網站根目錄下創建 index.php 列印基本的配置信息,以驗證我們是否安裝成功。
配置編譯環境
我們需要安裝一些編譯必須的庫,還有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora
sudo yum install php-devel php-mysqlnd gcc libtool

RHEL
sudo yum install php-devel php-mysql gcc libtool

Suse
yast2 -i php5-pear php5-devel php5-mysql gcc

安裝擴展
PHP有兩種可供安裝的擴展:一種是PHP原生的但是默認沒有安裝的,另一種的第三方開發的擴展。
下面依次介紹兩種擴展的安裝方法:
安裝之前我們需要一份和當前機器上相同版本的PHP源碼
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此處 下載相應的源碼包。
在 /ext 目錄下面可以看到所有PHP原生的擴展。
安裝原生擴展
以 PHP-intl 為例,這是PHP國際化的擴展。
為了安裝這個擴展我們需要先安裝ICU 庫
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安裝成功之後進入/ext/intl 目錄:
cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解釋一下上面的每個命令:
phpize : 是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊
./configure --enable-intl: 配置編譯環境,相當於告訴編譯器編譯PHP源碼的時候加上intl這個擴展。
make: 將會把源碼編譯成 intl.so
make install : 將會把 intl.so 移動到當前安裝的 PHP 的擴展目錄。
接下來我們要做的就是在php.ini中啟用這個擴展,這一步將會在最後給出示例。
安裝第三方擴展
將以這個 擴展為例,這個擴展主要實現了PHP識別條形碼的功能。
先安裝必要的依賴
sudo apt-get install pkg-config

git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

將會生成一個文件,將其拷貝到PHP的擴展目錄下面。
啟用擴展
在php.ini中啟用擴展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,這是最簡單直接的方法。
也可以單獨建一個ini文件,然後在php.ini中包含這些文件就可以了。
下面介紹一下第二種方法:
cd `/etc/php5/mods-available`

這個目錄里可以放新建的ini文件,然後執行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令將會創建ini文件,並且寫如相應的配置信息。
然後執行下面的命令啟用擴展即可(需要安裝 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl

如果未安裝 php5enmod 工具,則需要手動配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最後在執行一下重啟操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart

㈣ php添加擴展dll文件

你這個dll是你自己編譯出來的還是網上下載的?請確保和你當前的php版本相符,然後放到ext目錄,打開php.ini加上一句extension=xx.dll,最後重啟Apache···然後看看你的phpinfo有沒有相應的信息

㈤ 如何在windows環境下編譯生成PHP的zookeeper擴展dll

1、創建編譯目錄「C:\php_sdk」
2、解壓php-sdk-binary-tools-20110915.zip裡面的文件到php_sdk目錄下
3、在開始菜單找到並打開Windows SDK CMD Shell (注意一定是SDK的shell , 不是DOS操作的cmd窗口),然後執行
[plain] view plain
setenv /x86 /xp /release //這一句一定要執行成功,要不怎麼都不會編譯成功
cd php_sdk
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat phpdev
執行後,目錄下會生成phpdev文件夾
4、進入C:\php_sdk\phpdev\vc9\x86\,把deps-5.3-vc9-x86.7z解壓到該目錄下,覆蓋deps文件夾。(php sdk)
5、把php源代碼也解壓到x86目錄下。
6、把runkit壓縮包內容解壓到php解壓後源碼下的ext目錄下,並把文件夾名runkit-master改為runkit
7、在x86目錄下創建obj文件夾,用於保存編譯時生成的文件
8、執行以下命令,用於創建php編譯配置
[plain] view plain
cd phpdev\vc9\x86\php5.3-201308211030
buildconf
configure --help >..\configure_help.txt
configure --disable-all --enable-cli --enable-runkit=shared --enable-object-out-dir=..\obj
註:配置中的--enable-runkit=shared意思是 memcache 以 dll 形式生成,否則就和php集成在一起了。

㈥ 用C語言寫PHP擴展如題 謝謝了

1.一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13 #> cd /software/php-5.2.13/ext 二、假設我們要開發一個名為caleng_mole的擴展,該擴展包含兩個函數:a--處理兩個整型相加和b-處理字元串重復輸出; 1、首先編寫一個函數定義文件,該文件編寫函數原型後綴為def,假設為:caleng_mole.def int a(int x, int y) string b(string str, int n) 2、通過擴展骨架生成器,將在ext目錄下自動建立擴展目錄caleng_mole #> ./ext_skel --extname=caleng_mole --proto=caleng_mole.def 3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_mole/config.m4,將如下行的注釋標簽"dnl"去掉,修改後如下所示: PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support, Make sure that the comment is aligned: [ --enable-myfunctions Enable myfunctions support]) 4、完善函數a和b的功能: #> vim /software/php-5.2.13/ext/caleng_mole/caleng_mole.c PHP_FUNCTION(a) { int x, y, z; int argc = ZEND_NUM_ARGS(); if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE) return; z = x + y; RETURN_LONG(z); } PHP_FUNCTION(b) { char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; long n; char *result; char *ptr; int result_length; if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) return; result_length = str_len * n; result = (char *) emalloc(result_length + 1); ptr = result; while (n--) { memcpy(ptr, str, str_len); ptr += str_len; } *ptr = '\0'; RETURN_STRINGL(result, result_length, 0); } 三、編譯安裝,假設php的安裝目錄為:/usr/localhost/webserver/php #> cd /software/php-5.2.13/ext/caleng_mole #> /usr/localhost/webserver/php/bin/phpize #> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config #> make #> make install 現在將在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目錄下生成caleng_mole.so文件 在php.ini配置文件中加入: extension=caleng_mole.so. 搞定收工

閱讀全文

與自己寫php擴展相關的資料

熱點內容
空氣壓縮機市場 瀏覽:47
泛函分析pdf 瀏覽:267
為什麼手機連上一個app沒有網路 瀏覽:863
新概念英語自學導讀pdf 瀏覽:6
騰訊雲域名解析到阿里雲伺服器需要備案嗎 瀏覽:542
應用加密機和可信平台 瀏覽:993
linuxusb禁用 瀏覽:724
宿州市電信dns伺服器地址是多少 瀏覽:85
數字簽名中報文加密方式 瀏覽:483
解壓包變成記事本格式了 瀏覽:287
安卓編程怎麼復制文本 瀏覽:820
雲開通伺服器 瀏覽:389
python編程集合降序 瀏覽:283
山西抖音小程序源碼 瀏覽:700
方舟編譯器到底什麼原理 瀏覽:643
演算法概率與人工干預 瀏覽:673
軟通動力android 瀏覽:20
linuxwireshark命令 瀏覽:197
php播放器插件 瀏覽:952
如何把python寫的程序導入手機 瀏覽:27