首页 PHP 正文
525

php安装json_post扩展

json_post扩展可以将请求中的json数据(content type 为 application/json 或 text/json)转为$_POST, 在php代码层处理的时候就可以直接用$_POST读取json数据了,避免了使用json_decode进行转化。 由于此扩展依赖于json扩展, 所以安装的时候需要注意扩展引入的顺序必须是先json后json_post. 同理其它具有依赖关系的扩展安装都要注意此问题。

cd ~
wget https://pecl.php.net/get/json_post-1.0.1.tgz
tar -xvf json_post-1.0.1.tgz
cd json_post-1.0.1
phpize
./configure
make   #在当前目录下生成了/modules/json_post.so
make install  #将json_post.so安装在了/usr/lib64/php/modules/json_post.so

接下来就是在php配置文件中引入扩展了
错误的做法是,直接在php.ini中加入extension=json_post.so
如果顺序不对,启动php-fpm的时候会报如下错误:
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/json_post.so' - /usr/lib64/php/modules/json_post.so                  : undefined symbol: php_json_decode_ex in Unknown on line 0

为了保证引入json_post扩展是在json后面,需要进入到目录 /etc/php.d/, 比如笔者的json扩展配置文件是40-json.init,
那么我们新建文件50-json_post.ini, 并写入内容:extension=json_post.so
保存并退出

检验一下扩展是否正常引入: php -m | grep json_post

代码验证json_post是否如期运行:
test.php:
<?php
var_dump($_POST);
?>

命令行模拟post请求: 
curl -X POST -d"{\"key1\":12, \"key2\":34}" localhost/test.php -H"Content-Type:application/json"

成功打印出数组则ok.


正在加载评论...