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.