首页 开发编程 正文

php怎么添加扩展 如何配置PHP

开发者可以通过它直接将XML文档片段作为合法的PHP表达式嵌入PHP代码中。它在代码库的php-lib目录中。现在简述一下在windows和linux下安装php的方法简介,如果想要安装多个版本的PHP的话,//www.toutiao.com/i6620557679083389453/安装PHP需要注意的地方如果是使用集成环境安装,安...

php怎么添加扩展,xhp什么意思?

1、 XHP是一个PHP扩展,开发者可以通过它直接将XML文档片段作为合法的PHP表达式嵌入PHP代码中。

2、 这样PHP就变成了一个更严格的模板引擎,大大简化了实现可复用组件的工作。

3、 确保包含文件init.php,它在代码库的php-lib目录中。这个XHP扩展只增加了XML语法的处理,元素都是在PHP中定义的。PHP代码中包含了XHP核心库,这意味着你可以在你的应用中使用XHP,但是它提示你,XHP升级导致的不兼容导致了你的错误。

如何安装并配置PHP?

安装和配置PHP,首先要看你是在什么操作系统下,而且PHP一般是配合web服务的,所以基本上会和apache或者nginx搭配使用。现在简述一下在windows和linux下安装php的方法简介,至于如何安装及安装过程这里就不再赘述了。

windows下安装PHP

windows下安装PHP有两种方式,一种是用windows的IIS配置PHP,这种方式过于复杂,一般也不推荐,目前对于开发来说用的比较多的有phpstudy/wamp等一些集成开发环境。在windows系统下我建议使用phpstudy集成开发环境,官方地址:

http://phpstudy.php.cn/

linux下安装PHP

linux操作系统(比如:ubuntu/centos等)安装PHP,如果想要省事的话,也可以使用一些集成开发环境,比如phpstudy或者lnmp集成环境。如果想要安装多个版本的PHP的话,还是需要源码编译安装的,安装过程之前有写过一篇文章,可以查阅一下:

https://www.toutiao.com/i6620557679083389453/

安装PHP需要注意的地方

如果是使用集成环境安装,那么在需要某些扩展的时候可能稍微没有源码安装那么方便,不过已经有人踩过这些坑了,只要你谷歌一下还是可以找到答案的。

PHP版本之间的兼容问题需要注意下,比如PHP4->PHP5->PHP7这个过程中有些功能扩展是默认关闭或者废弃的。

安装完成后需要配合nginx或者apache来验证PHP的安装是否成功,当然如果你不需要用PHP来开发web那这一步也可以忽略,PHP也可以使用命令行模式执行的。

在PHP中如何正确创建函数?

tep 1 =>

php的扩展模块都放在 ext/ 目录下,比如说 snmp模块、mysql模块。 我们要建立自己的模块,就要在ext目录下为自己的模块建一个目录。比如,我们要做一个分析config文件的模块,命名为pconfig模块(parse config的简写),需在ext下建立目录pconfig。将我写好的7个文件copy到该目录下,另外需对主目录下的configure和internal_functions.c作一些修改。

Step 2 =>

Makefile.am Makefile.in

是模板文件,用户执行configure时,会调用这两个文件,生成编译时所用的Makefile文件。修改时将小写的pconfig换成你自己的模块名,别忘了把大写的PCONFIG也替换掉(不要告诉我你不会vi的替换语句)。config.m4也是执行configure将会调用的检测脚本程序,以后我们来讨论这些脚本程序的更深入的修改。现在你只需要把pconfig该成你的模块就可以了。对config.h.stub和setup.stub也如法炮制。其实setup.stub也没什么用。

Step 3 =>

php3-pconfig.h 头文件中

extern php3_module_entry pconfig_module_entry;

#define pconfig_module_ptr &pconfig_module_entry

#define phpext_pconfig_ptr pconfig_module_ptr

这几行定义了模块的入口,将入口注册到php后,php会通过模块入口找到你写的函数

下面几个函数定义是用宏进行定义的,展开以后其实就是 php3_minit_pconfig , php3_rinit_pconfig ……分别在你的模块初试化或结束时被调用,如果你的模块很简单,也就不需要这些定义了

extern PHP_MINIT_FUNCTION(pconfig);

extern PHP_RINIT_FUNCTION(pconfig);

extern PHP_MSHUTDOWN_FUNCTION(pconfig);

PHP_MINFO_FUNCTION(pconfig);

这是你的函数声明,将来写在php脚本语句中的函数名就是在PHP_FUNCTION中定义的名字。

PHP_FUNCTION(pconfig_test);

如果有多个,还可以继续往下加

PHP_FUNCTION(pconfig_parsefile);

PHP_FUNCTION(pconfig_release); …….

Step 4 =>

接下来我们看最重点的C代码了

function_entry pconfig_functions[] = {

PHP_FE(pconfig_test, NULL)

{NULL, NULL, NULL}

};

定义的是你的函数的入口(前面我们提到过模块的入口),按照格式将你在头文件中定义的函数写进去吧。注意,这是用宏定义的,不要管语法是否正确。以后我们具体讨论这些宏的用法。

php3_module_entry pconfig_module_entry = {

"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES

};

注册模块的入口信息,比如模块名,函数接口,初试化模块将调用的函数等等,如果你的模块不执行复杂操作的话,可以忽略掉他们,写成

php3_module_entry pconfig_module_entry = {

"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES

};

Step 5 =>

写你自己的函数

在头文件和function_entry处,我们已经定义了自己的函数pconfig_test,现在我们就来实现pconfig_test的功能。就比如执行两个数相加的和吧。

static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)

{ ......

}

PHP_FUNCTION(pconfig_test)

{

_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);

}

当系统调用pconfig_test时,会调用你的_php3_pconfig_test函数,当然你也可以把_php3_pconfig_test里的内容直接写在PHP_FUNCTION(pconfig_test)中,这样做只是程序结构比较清晰。注意:不要将_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展开后实际上就是php3_pconfig_test!

Step 6 =>

好了,现在我们开始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(当然,如果你熟悉configure的话,可以加在任何合适的地方)加上下面几句话

if test "${with_pconfig+set}" = set; then

withval="$with_pconfig"

# Add your lib in here

EXTRA_LIBS="$EXTRA_LIBS"

# Add your include path in here

INCLUDES="$INCLUDES"

EXT_SUBDIRS="$EXT_SUBDIRS pconfig"

EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"

EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"

EXT_STATIC="$EXT_STATIC pconfig"

fi

修改internal_functions.c,在头文件定义中加入#include "ext/pconfig/php3_pconfig.h"

在zend_module_entry数组中加入phpext_pconfig_ptr,

Step 7 =>

从新configure,带上需要的参数,不要忘记的是在参数里加入 --with-pconfig

Step 8 =>

index.php3

<? echo pconfig_test(123,678)."

"; ?>

执行%>php index.php3

phpstudy?

你安装iis没有 phpstudy安装时候可以选iis和apache 如果你安装iis并且选择了apache,那么是端口冲突,请修改apache端口 如果你安装了iis并且选择了iis,那么在iis配置里面加入.php扩展 如果没有装iis,选择了apache,检查apache是否启动! apache里面你可以把默认页增加一个phpinfo.php,就可以用http://localhost/访问到了

php怎么将数据导入redis?

开始在PHP中使用redis前,要确保已经安装了redis服务及PHPredis驱动,且你的机器上能正常使用PHP。

PHP安装redis扩展

/usr/local/php/bin/phpize#php安装后的路径

./configure--with-php-config=/usr/local/php/bin/php-config

make&&makeinstall

修改php.ini文件

vi/usr/local/php/lib/php.ini

增加如下内容:

extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20090626"

extension=redis.so

安装完成后重启php-fpm或apache。查看phpinfo信息,就能看到redis扩展。

连接到redis服务

<?php

//连接本地的Redis服务

$redis=newRedis();

$redis->connect('127.0.0.1',6379);

echo"Connectiontoserversucessfully";

//查看服务是否运行

echo"Serverisrunning:".$redis->ping();

?>

执行脚本,输出结果为:

Connectiontoserversucessfully

Serverisrunning:PONG

RedisPHPString(字符串)实例

<?php

//连接本地的Redis服务

$redis=newRedis();

$redis->connect('127.0.0.1',6379);

echo"Connectiontoserversucessfully";

//设置redis字符串数据

$redis->set("tutorial-name","Redistutorial");

//获取存储的数据并输出

echo"Storedstringinredis::".jedis.get("tutorial-name");

?>

执行脚本,输出结果为:

Connectiontoserversucessfully

Storedstringinredis::Redistutorial

RedisPHPList(列表)实例

<?php

//连接本地的Redis服务

$redis=newRedis();

$redis->connect('127.0.0.1',6379);

echo"Connectiontoserversucessfully";

//存储数据到列表中

$redis->lpush("tutorial-list","Redis");

$redis->lpush("tutorial-list","Mongodb");

$redis->lpush("tutorial-list","Mysql");

//获取存储的数据并输出

$arList=$redis->lrange("tutorial-list",0,5);

echo"Storedstringinredis::"

print_r($arList);

?>

执行脚本,输出结果为:

Connectiontoserversucessfully

Storedstringinredis::

Redis

Mongodb

Mysql

RedisPHPKeys实例

<?php

//连接本地的Redis服务

$redis=newRedis();

$redis->connect('127.0.0.1',6379);

echo"Connectiontoserversucessfully";

//获取数据并输出

$arList=$redis->keys("*");

echo"Storedkeysinredis::"

print_r($arList);

?>

执行脚本,输出结果为:

Connectiontoserversucessfully

Storedstringinredis::

tutorial-name

tutorial-list

本文转载自互联网,如有侵权,联系删除