货币问答:php扩展

韦少少

PHP如何添加内置的扩展

curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。在xampp集成环境中,curl自带,只不过默认关闭。vim /etc/php.ini注:此处的/etc/php.ini 请找到自己的php.ini路径所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。然后找到:;extension=php_curl.dll在Vim下搜索字符串方法如下:1、命令模式下输入“/字符串”,例如“/Section 3”。2、如果查找下一个,按“n”即可。要自当前光标位置向上搜索,请使用以下命令:/pattern Enter将;extension=php_curl.dll的注释去掉,保存退出:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。最后重启服务即可service httpd restart

推荐
不推荐
展开
收起
乌蛮

如何安装新的PHP扩展模块

php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的。我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有方法的,重点就是phpize了,于是写了这篇文章.下面我们就以单独为php加载mysqli模块为例,演示如何动态为php添加模块。1、找到php原码安装文件2、cd /home/php/ext/myslqi3、运行 /usr/local/php/bin/phpize4、/configure –with-php-config=/usr/local/php/bin/php-config5、make && make install6、安装完成之后会在系统/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/这个目录下面生成mysqli.so的库文件7、编辑php.ini文件,指定php到哪人目录读取模块vi /usr/local/php/etc/php.iniextension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613″extension=mysqli.so8、重启php服务 /usr/local/php/sbin/php-fpm restart7、/usr/local/php/bin/php -m|grep mysqli 查看mysqli.so是否存在如果步骤正确,你的人口也不差的情况下,应该这样php的动态模块加载就完成了。

推荐
不推荐
展开
收起
毋丘甸

PHP如何扩展和如何在linux底层对php扩展

#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include <errno.h>#include <dlfcn.h>//定义我们自己的connect函数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选项绕过LD_PRELOAD环境变量的connect方法找到c库的函数 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)) { //简单返回一个权限错误的代码 return EACCES; }// 调用真正的connect方法 return connect_linuxc(sockfd,serv_addr,addrlen); }编译成so文件$ gcc -o lp_demo.so -shared lp_demo.c -ldl测试文件 test.php<?phpfile_get_contents("");?>使用方法LD_PRELOAD=lp_demo.so php test.php这样他将不可能访问的到192.168.2.3这种我们内部的网址。起到一个很好的沙盒作用。除此之外我们还可以利用fwrite fopen等函数将php对文件系统的读写操作转移到mencache,nosql之类的后端资源当中。 最后,即使我们已经深入了c库的内部,也不意味着我们走到了最底层,在c库下面,还有一堆sys_开头的函数,他们才是内核空间里的真正函数,在此就不在探讨了。

推荐
不推荐
展开
收起
万里煌

PHP的扩展模块怎么添加?

在PHP/etc 文件夹中加入扩展在PHP 文件夹下的php.ini文件里 有很多dll文件的地方加入一行 你所添加的扩展的名字xxxx.dll或者 是 在php.ini中直接打开对应的扩展 ,将目标行的 ; 给去掉哦,对了,最后记得要重新启动PHP的服务器

推荐
不推荐
展开
收起
朱赤午

如何在CentOS7下为PHP添加扩展模块

首先在Linux下安装PHP扩展的方法有很多一下我就演示一下我们最常见的一种方法。

  • 安装PHP扩展

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

以上的步骤会输出扩展安装目录:/usr/local/server/php-5.4.14/lib/php/extensions/no-debug-non-zts-20100525/

  • 修改php.ini,加入语句如下

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

推荐
不推荐
展开
收起
凌天

linux 怎么看php扩展模块是否加载成功

|静态只要一启动就能加载 动态用的时候才加载 .so/usr/local/php5/bin/php -i |less 查看配置文件在哪里,编译参数/usr/local/php5/bin/php -m |less 查看php加载的模块

推荐
不推荐
展开
收起
鄢什

在php扩展中,如果实现以下mysql功能?一条语句实现

  • Mysqli是php5之后才有的功能,没有开启扩展的朋友可以打开您的php.ini的配置文件。 
查找下面的语句:;extension=php_mysqli.dll将其修改为:extension=php_mysqli.dll即可。  相对于mysql有很多新的特性和优势  (1)支持本地绑定、准备(prepare)等语法  (2)执行sql语句的错误代码  (3)同时执行多个sql  (4)另外提供了面向对象的调用接口的方法。  下面一一用php实例进行mysqli数据库连接!  使用方法一:使用传统的面向过程的方法  php代码如下:  <?php  $connect = mysqli_connect('localhost','root','','volunteer') or die('Unale to connect');  $sql = "select * from vol_msg";  $result = mysqli_query($connect,$sql);  while($row = mysqli_fetch_row($result)){  echo $row[0];  }  ?>  使用方法二:使用面向对象的方法调用接口(推荐使用)  看php代码如下:  复制代码 代码如下: <?php  //创建对象并打开连接,最后一个参数是选择的数据库名称  $mysqli = new mysqli('localhost','root','','volunteer');  //检查连接是否成功  if (mysqli_connect_errno()){  //注意mysqli_connect_error()新特性  die('Unable to connect!'). mysqli_connect_error();  }  $sql = "select * from vol_msg";  //执行sql语句,完全面向对象的  $result = $mysqli->query($sql);  while($row = $result->fetch_array()){  echo $row[0];  }  ?>  以上两个php实例运行的结果完全相同,可以清楚的看到使用mysqli类对象构建数据库连接的优势!  插入和修改记录我就不用讲了,只要更改一下sql语句就行,下一篇我会讲prepare接口特性!

追问
你这样打酱油可以嘛?

推荐
不推荐
展开
收起
王征

php为什么要用c来扩展

1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng_module.defint a(int x, int y)string b(string str, int n)2、通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_module#> ./ext_skel --extname=caleng_module --proto=caleng_module.def3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_module/config.m4,将如下行的注释标签"dnl"去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,Make sure that the comment is aligned:[ --enable-myfunctions Enable myfunctions support])

推荐
不推荐
展开
收起
乱世佳人

“PHP中扩展库”是什么意思?如何加载?

扩展库是php扩展的功能,比如php本来不支持操作某种功能 ,但在新版本想对它提供支持,就以扩展的方式来提供,这样,我们在配置php时,如果我们不用此功能,我们就可以让php不加载他.从而节省服务器资源.提供其性能 php的扩展库一般放在php目录下的ext目录里.你在网上下载的php压缩包解压后应该可以看到. php.ini中的 extension_dir 用来指定你的扩展名的地址 。 php.ini中有一排像 ;extension="xxxxxx.dll" 的内容就是用来配置让你的php运行环境支持什么不支持什么。以下为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对图片操作的扩展;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)数据库的扩展;extension=php_mysql.dll //php操作mysql数据库的扩展------------------------------要让php支持某种功能,把extension前面的 " ; "号去掉,重启apache或iis即可。

推荐
不推荐
展开
收起
查看更多答案
收起