韋少少
curl是利用URL語(yǔ)法在命令行方式下工作的開(kāi)源文件傳輸工具。它被廣泛應(yīng)用在Unix、多種Linux發(fā)行版中,并且有DOS和Win32、Win64下的移植版本。在xampp集成環(huán)境中,curl自帶,只不過(guò)默認(rèn)關(guān)閉。vim /etc/php.ini注:此處的/etc/php.ini 請(qǐng)找到自己的php.ini路徑所有的 Unix Like 系統(tǒng)都會(huì)內(nèi)建 vi 文書(shū)編輯器,其他的文書(shū)編輯器則不一定會(huì)存在。vim 具有程序編輯的能力,可以主動(dòng)的以字體顏色辨別語(yǔ)法的正確性,方便程序設(shè)計(jì)。然后找到:;extension=php_curl.dll在Vim下搜索字符串方法如下:1、命令模式下輸入“/字符串”,例如“/Section 3”。2、如果查找下一個(gè),按“n”即可。要自當(dāng)前光標(biāo)位置向上搜索,請(qǐng)使用以下命令:/pattern Enter將;extension=php_curl.dll的注釋去掉,保存退出:x 寫(xiě)入文件并退出。僅當(dāng)文件被修改時(shí)才寫(xiě)入,并更新文件修改時(shí)間,否則不會(huì)更新文件修改時(shí)間。最后重啟服務(wù)即可service httpd restart
烏蠻
php安裝好后,可能在初次安裝時(shí),會(huì)有些模塊會(huì)有遺漏,但是我們又不想重新編譯php,因?yàn)楹臅r(shí)是比較長(zhǎng)的。我們可不可以在不重新編譯安裝php的情況下,來(lái)為php單獨(dú)添加某一個(gè)模塊呢?查找資料,發(fā)現(xiàn)還是有方法的,重點(diǎn)就是phpize了,于是寫(xiě)了這篇文章.下面我們就以單獨(dú)為php加載mysqli模塊為例,演示如何動(dòng)態(tài)為php添加模塊。1、找到php原碼安裝文件2、cd /home/php/ext/myslqi3、運(yùn)行 /usr/local/php/bin/phpize4、/configure –with-php-config=/usr/local/php/bin/php-config5、make && make install6、安裝完成之后會(huì)在系統(tǒng)/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/這個(gè)目錄下面生成mysqli.so的庫(kù)文件7、編輯php.ini文件,指定php到哪人目錄讀取模塊vi /usr/local/php/etc/php.iniextension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613″e(cuò)xtension=mysqli.so8、重啟php服務(wù) /usr/local/php/sbin/php-fpm restart7、/usr/local/php/bin/php -m|grep mysqli 查看mysqli.so是否存在如果步驟正確,你的人口也不差的情況下,應(yīng)該這樣php的動(dòng)態(tài)模塊加載就完成了。
毋丘甸
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include <errno.h>#include <dlfcn.h>//定義我們自己的connect函數(shù)int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen){ static int (*connect_linuxc)(int, const struct sockaddr*, socklen_t)=NULL; unsigned char *ip_char; //利用 lsym的RTLD_NEXT選項(xiàng)繞過(guò)LD_PRELOAD環(huán)境變量的connect方法找到c庫(kù)的函數(shù) if (!connect_linuxc) connect_linuxc=dlsym(RTLD_NEXT,"connect"); ip_char=serv_addr->sa_data; ip_char+=2;//192.168.2.3 找到了 if ((*ip_char==192)&&(*(ip_char+1)==168)&&(*(ip_char+2)==2)&&(*(ip_char+3)==3)) { //簡(jiǎn)單返回一個(gè)權(quán)限錯(cuò)誤的代碼 return EACCES; }// 調(diào)用真正的connect方法 return connect_linuxc(sockfd,serv_addr,addrlen); }編譯成so文件$ gcc -o lp_demo.so -shared lp_demo.c -ldl測(cè)試文件 test.php<?phpfile_get_contents("");?>使用方法LD_PRELOAD=lp_demo.so php test.php這樣他將不可能訪問(wèn)的到192.168.2.3這種我們內(nèi)部的網(wǎng)址。起到一個(gè)很好的沙盒作用。除此之外我們還可以利用fwrite fopen等函數(shù)將php對(duì)文件系統(tǒng)的讀寫(xiě)操作轉(zhuǎn)移到mencache,nosql之類的后端資源當(dāng)中。 最后,即使我們已經(jīng)深入了c庫(kù)的內(nèi)部,也不意味著我們走到了最底層,在c庫(kù)下面,還有一堆sys_開(kāi)頭的函數(shù),他們才是內(nèi)核空間里的真正函數(shù),在此就不在探討了。
萬(wàn)里煌
在PHP/etc 文件夾中加入擴(kuò)展在PHP 文件夾下的php.ini文件里 有很多dll文件的地方加入一行 你所添加的擴(kuò)展的名字xxxx.dll或者 是 在php.ini中直接打開(kāi)對(duì)應(yīng)的擴(kuò)展 ,將目標(biāo)行的 ; 給去掉哦,對(duì)了,最后記得要重新啟動(dòng)PHP的服務(wù)器
朱赤午
首先在Linux下安裝PHP擴(kuò)展的方法有很多一下我就演示一下我們最常見(jiàn)的一種方法。
安裝PHP擴(kuò)展
wget http://pecl.php.net/get/gearman-1.1..1.tgztar zxvf gearman-1.1.1-tgzcd gearman-1.1.1/usr/local/server/php/bin/phpize./configure --with-php-config=/usr/local/server/php/bin/php-config --with-gearman=/usr/local/server/gearmand-1.1.7/make && make install
以上的步驟會(huì)輸出擴(kuò)展安裝目錄:/usr/local/server/php-5.4.14/lib/php/extensions/no-debug-non-zts-20100525/
修改php.ini,加入語(yǔ)句如下
extension=/usr/local/server/php-5.4.14/lib/php/extensions/no-debug-non-zts-20100525/gearman.so
重啟php-fpm,用phpinfo查看是否安裝成功
service php-fpm restart
凌天
|靜態(tài)只要一啟動(dòng)就能加載 動(dòng)態(tài)用的時(shí)候才加載 .so/usr/local/php5/bin/php -i |less 查看配置文件在哪里,編譯參數(shù)/usr/local/php5/bin/php -m |less 查看php加載的模塊
鄢什
你這樣打醬油可以嘛?
王征
1、首先編寫(xiě)一個(gè)函數(shù)定義文件,該文件編寫(xiě)函數(shù)原型后綴為def,假設(shè)為:caleng_module.defint a(int x, int y)string b(string str, int n)2、通過(guò)擴(kuò)展骨架生成器,將在ext目錄下自動(dòng)建立擴(kuò)展目錄caleng_module#> ./ext_skel --extname=caleng_module --proto=caleng_module.def3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_module/config.m4,將如下行的注釋標(biāo)簽"dnl"去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,Make sure that the comment is aligned:[ --enable-myfunctions Enable myfunctions support])
亂世佳人
擴(kuò)展庫(kù)是php擴(kuò)展的功能,比如php本來(lái)不支持操作某種功能 ,但在新版本想對(duì)它提供支持,就以擴(kuò)展的方式來(lái)提供,這樣,我們?cè)谂渲胮hp時(shí),如果我們不用此功能,我們就可以讓php不加載他.從而節(jié)省服務(wù)器資源.提供其性能 php的擴(kuò)展庫(kù)一般放在php目錄下的ext目錄里.你在網(wǎng)上下載的php壓縮包解壓后應(yīng)該可以看到. php.ini中的 extension_dir 用來(lái)指定你的擴(kuò)展名的地址 。 php.ini中有一排像 ;extension="xxxxxx.dll" 的內(nèi)容就是用來(lái)配置讓你的php運(yùn)行環(huán)境支持什么不支持什么。以下為php.ini中的剪切段------------------------------;extension=php_bz2.dll;extension=php_curl.dll;extension=php_dba.dll;extension=php_dbase.dll;extension=php_exif.dll;extension=php_fdf.dll;extension=php_gd2.dll //php對(duì)圖片操作的擴(kuò)展;extension=php_gettext.dll;extension=php_gmp.dll;extension=php_ifx.dll;extension=php_imap.dll;extension=php_interbase.dll;extension=php_ldap.dll;extension=php_mbstring.dll;extension=php_mcrypt.dll;extension=php_mhash.dll;extension=php_mime_magic.dll;extension=php_ming.dll;extension=php_msql.dll;extension=php_mssql.dll //php操作mssql (sql server)數(shù)據(jù)庫(kù)的擴(kuò)展;extension=php_mysql.dll //php操作mysql數(shù)據(jù)庫(kù)的擴(kuò)展------------------------------要讓php支持某種功能,把extension前面的 " ; "號(hào)去掉,重啟apache或iis即可。