问题
由于之前编译安装php的时候,只编译了最基本的模块,今天突然想用PHP的交互模式php -a
,就是像python那样,进入交互模式后,可以在命令行模式下执行一些代码打印结果,这对于测试函数得用法是很方便的,但是当我运行php -a
的时候,输入echo 1
却没有输出。原因是缺少readline模块。
解决
安装readline,由于它依赖2个模块,re2c和libedit-dev,我们先对其进行安装,然后在安装readline。
步骤如下:
1、安装re2c,libedit-dev,yum install libedit-devel -y
, yum install re2c -y
。
2、 进入php编译好的源码位置,我的位置是/usr/local/php7.4.5/php-7.4.5
,cd /usr/local/php7.4.5/php-7.4.5
3、进入ext,如下找到了readline。
4、进入readline进行编译
-
cd readline
-
执行
/usr/local/php7.4.5/bin/phpize
,这时候会在readline目录下生成相应的configure文件 (其实phpize是一个运行脚本,主要作用是检测php的环境还有就是在特定的目录生成相应的configure文件,这样makeinstall之后,生成的.so文件才会自动加载到php扩展目录下面)。
-
./configure --with-php-config=/usr/local/php7.4.5/bin/php-config
-
make
-
make install
。
-
我们进入/usr/local/php7.4.5/lib/php/extensions/no-debug-zts-20190902,看到生成了readline.so
-
在php.ini引入扩展extension=readline.so,我们先用
php -r "phpinfo();"|grep php.ini
查看用的php.ini的位置。
-
修改php.ini。
查看效果
参考连接:https://blog.csdn.net/weixin_38674371/article/details/84714696