今日在linux下安装composer的时候,发现php没有安装 openssl。导致不能下载composer.phar 。
有两种方法可以解决这个事情:
1、简单 粗暴 暴力 重新编译php 把扩展 打开
2、下载对应的源码 通过 phpize 然后 configure 编译 扩展。
这台服务器,之前我们是怎么扩展的函数,我已经不记得了,我好像是记得有一条命令可以查看,
我当时是使用哪些参数编译的,但也找不到。即使找到了,也很难重新编译后,配置也是需要重新配置的。
因此这里选择 了第二种方案:
于是就有了打扩展,只安装openssl
1、进入php源安装目录
/usr/local/src/phpInstall/php7.2.4/ext
然后进入 openssl 目录
2、通过phpize
可能会报错:Cannot find config.m4.
Cannot find config.m4. Make sure that you run '/usr/local/php/php7/bin/phpize' in the top level source directory of the module
解决办法:直接把这个目录 下的 config0.m4 修改成 config.m4
mv config0.m4 config.m4
然后通过 /usr/local/php/php7/bin/phpize
[root@localhost openssl]# /usr/local/php/php7/bin/phpize Configuring for: PHP Api Version: 20170718 Zend Module Api No: 20170718 Zend Extension Api No: 320170718
3、编译
./configure --with-php-config=/usr/local/php/php7/bin/php-config
4、make
Libraries have been installed in: /usr/local/src/phpInstall/php-7.2.4/ext/openssl/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'.
5、make install
Installing shared extensions: /usr/local/php/php7/lib/php/extensions/no-debug-non-zts-20170718/
6、配置 php.ini
我的php配置文件保存在 /usr/local/php/php7/etc/php.ini 这里
vim /usr/local/php/php7/etc/php.ini
把 extension=openssl.so
添加到文件中,保存退出
7、重新启动php-fpm 即可。
注意说明:
其他的php扩展,如果少什么,就和上面一样,这样打上扩展即可。
为php扩展无非就是
phpize
./configure --with-php-config=/usr/local/php/php7/bin/php-config
make && make install
安装pcntl支持workerman
最近在研究workerman ,workerman的启动是需要 pcntl 的,我的服务器上没有 pcntl,那么怎么扩展呢?
通过命令行,知道当前的php版本是什么
php -v [root@localhost pcntl]# cd /usr/local/src/phpInstall/php-7.2.4/ext/pcntl [root@localhost pcntl]# pwd/usr/local/src/phpInstall/php-7.2.4/ext/pcntl [root@localhost pcntl]# /usr/local/php/php7/bin/phpize [root@localhost pcntl]# ./configure --with-php-config=/usr/local/php/php7/bin/php-config [root@localhost pcntl]# make && make install #然后重复上面的第6步,将 pcntl.so 添加到 php.ini 配置文件中 [root@localhost pcntl]# php -m | grep pcntl #我们发现php已经支持pcntl扩展了。