参考:http://blog.chinaunix.net/uid-15866552-id-271562.html
前言:安装了一次opt的php扩展,从上文中成功安装,特此记录下
系统环境centos7.2+php7.2
运维工具:宝塔
所需扩展源文件:libetotpverify.so,Makefile ,otp_interface.h,php_otpverify.c,php_otpverify.h
环境路径:PHP的路径:一般是安装目录+/include/php,例如:/usr/local/php5/include/php
拷贝文件到 /usr/local/src/otp_verify_php_Linux
1、cd /usr/local/src/otp_verify_php_Linux
2、ldd libetotpverify.so 查看依赖的库是否有(如下图所示,为所有依赖都存在的情况)
[root@ecs-0000 soft]# ldd libetotpverify.so
linux-vdso.so.1 => (0x00007ffca058b000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fdd6adf8000)
libm.so.6 => /lib64/libm.so.6 (0x00007fdd6aaf6000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdd6a8e0000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdd6a512000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdd6b0ff000)
3、yum install libxml*(没有安装的先按照)
4、(php环境目录)/usr/local/php5/bin/php-config --includes 查看路径:PHP_ROOT=/usr/local/php5/include/php
5、是否和vim Makefile中的PHP_ROOT=/usr/local/php5/include/php相同。
6、如果不相同,修改 vim Make,指定路径。
7、如果php编译时没有选择线程安全,这时要修改Makefile中的CFLAGS = -fpic -DTHREAD_SAFETY为CFLAGS = -fpic,即去掉-DTHREAD_SAFETY再Make
8、将libetotpverify.so和php_otpverify.so放到可以访问到的lib路径下,一般libetotpverify.so放到/usr/lib(64位的so放到/usr/lib64下),php_otpverify.so放到PHP的扩展目录下,PHP扩展目录要查看php.ini
9、make
10、将生成的php_otpverify.so移动到php扩展库目录下
11、在php.ini文件中加入扩展调用,extension=php_otpverify.so,重启apahce服务器,如果在phpinfo()中能够看到OTP Verify的扩展就说明已经加载上了。如果没有加载上可以使用 /usr/local/php5/bin/php -i|grep otp来查看下错误
记录:
[root@ecs-0000 var]# cd /www
[root@ecs-0000 www]# cd soft/
[root@ecs-0000 soft]# dir
etotpverify_linux64_20100526.tar.gz libetotpverify.a libetotpverify.so
[root@ecs-0000 soft]# ldd libetotpverify.so
linux-vdso.so.1 => (0x00007ffca058b000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fdd6adf8000)
libm.so.6 => /lib64/libm.so.6 (0x00007fdd6aaf6000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdd6a8e0000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdd6a512000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdd6b0ff000)
[root@ecs-0000 soft]# yum install libxml*
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 6.9 kB 00:00:00
* base: centos.usonyx.net
* epel: hk.mirrors.thegigabit.com
* extras: centos.usonyx.net
* updates: centos.usonyx.net
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/5): epel/x86_64/group_gz | 95 kB 00:00:00
(2/5): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(3/5): extras/7/x86_64/primary_db | 206 kB 00:00:00
(4/5): epel/x86_64/primary_db | 6.9 MB 00:00:00
(5/5): updates/7/x86_64/primary_db | 4.5 MB 00:00:01
Package libxml2-2.9.1-6.el7.4.x86_64 already installed and latest version
Package libxml2-devel-2.9.1-6.el7.4.x86_64 already installed and latest version
Package libxml2-python-2.9.1-6.el7.4.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package libxml++.x86_64 0:2.37.1-1.el7 will be installed
--> Processing Dependency: libglibmm-2.4.so.1()(64bit) for package: libxml++-2.37.1-1.el7.x86_64
--> Processing Dependency: libsigc-2.0.so.0()(64bit) for package: libxml++-2.37.1-1.el7.x86_64
---> Package libxml++-devel.x86_64 0:2.37.1-1.el7 will be installed
--> Processing Dependency: pkgconfig(glibmm-2.4) >= 2.32.0 for package: libxml++-devel-2.37.1-1.el7.x86_64
--> Processing Dependency: glibmm24-devel for package: libxml++-devel-2.37.1-1.el7.x86_64
---> Package libxml++-doc.noarch 0:2.37.1-1.el7 will be installed
--> Processing Dependency: glibmm24-doc for package: libxml++-doc-2.37.1-1.el7.noarch
---> Package libxml2-static.x86_64 0:2.9.1-6.el7.4 will be installed
--> Running transaction check
---> Package glibmm24.x86_64 0:2.56.0-1.el7 will be installed
---> Package glibmm24-devel.x86_64 0:2.56.0-1.el7 will be installed
--> Processing Dependency: pkgconfig(sigc++-2.0) for package: glibmm24-devel-2.56.0-1.el7.x86_64
--> Processing Dependency: perl(XML::Parser) for package: glibmm24-devel-2.56.0-1.el7.x86_64
---> Package glibmm24-doc.noarch 0:2.56.0-1.el7 will be installed
--> Processing Dependency: libsigc++20-doc for package: glibmm24-doc-2.56.0-1.el7.noarch
---> Package libsigc++20.x86_64 0:2.10.0-1.el7 will be installed
--> Running transaction check
---> Package libsigc++20-devel.x86_64 0:2.10.0-1.el7 will be installed
---> Package libsigc++20-doc.noarch 0:2.10.0-1.el7 will be installed
---> Package perl-XML-Parser.x86_64 0:2.41-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================================
Package Arch Version Repository Size
===========================================================================================================
Installing:
libxml++ x86_64 2.37.1-1.el7 epel 99 k
libxml++-devel x86_64 2.37.1-1.el7 epel 32 k
libxml++-doc noarch 2.37.1-1.el7 epel 493 k
libxml2-static x86_64 2.9.1-6.el7.4 base 590 k
Installing for dependencies:
glibmm24 x86_64 2.56.0-1.el7 base 534 k
glibmm24-devel x86_64 2.56.0-1.el7 base 542 k
glibmm24-doc noarch 2.56.0-1.el7 base 5.7 M
libsigc++20 x86_64 2.10.0-1.el7 base 37 k
libsigc++20-devel x86_64 2.10.0-1.el7 base 71 k
libsigc++20-doc noarch 2.10.0-1.el7 base 3.4 M
perl-XML-Parser x86_64 2.41-10.el7 base 223 k
Transaction Summary
===========================================================================================================
Install 4 Packages (+7 Dependent packages)
Total download size: 12 M
Installed size: 65 M
Is this ok [y/d/N]: y
Downloading packages:
(1/11): glibmm24-devel-2.56.0-1.el7.x86_64.rpm | 542 kB 00:00:00
(2/11): glibmm24-2.56.0-1.el7.x86_64.rpm | 534 kB 00:00:00
(3/11): libsigc++20-2.10.0-1.el7.x86_64.rpm | 37 kB 00:00:00
(4/11): libsigc++20-devel-2.10.0-1.el7.x86_64.rpm | 71 kB 00:00:00
(5/11): libxml++-2.37.1-1.el7.x86_64.rpm | 99 kB 00:00:00
(6/11): libxml++-devel-2.37.1-1.el7.x86_64.rpm | 32 kB 00:00:00
(7/11): libxml++-doc-2.37.1-1.el7.noarch.rpm | 493 kB 00:00:00
(8/11): libsigc++20-doc-2.10.0-1.el7.noarch.rpm | 3.4 MB 00:00:01
(9/11): libxml2-static-2.9.1-6.el7.4.x86_64.rpm | 590 kB 00:00:00
(10/11): perl-XML-Parser-2.41-10.el7.x86_64.rpm | 223 kB 00:00:00
(11/11): glibmm24-doc-2.56.0-1.el7.noarch.rpm | 5.7 MB 00:00:01
-----------------------------------------------------------------------------------------------------------
Total 5.5 MB/s | 12 MB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libsigc++20-2.10.0-1.el7.x86_64 1/11
Installing : glibmm24-2.56.0-1.el7.x86_64 2/11
Installing : libxml++-2.37.1-1.el7.x86_64 3/11
Installing : libsigc++20-devel-2.10.0-1.el7.x86_64 4/11
Installing : libsigc++20-doc-2.10.0-1.el7.noarch 5/11
Installing : glibmm24-doc-2.56.0-1.el7.noarch 6/11
Installing : perl-XML-Parser-2.41-10.el7.x86_64 7/11
Installing : glibmm24-devel-2.56.0-1.el7.x86_64 8/11
Installing : libxml++-devel-2.37.1-1.el7.x86_64 9/11
Installing : libxml++-doc-2.37.1-1.el7.noarch 10/11
Installing : libxml2-static-2.9.1-6.el7.4.x86_64 11/11
Verifying : glibmm24-doc-2.56.0-1.el7.noarch 1/11
Verifying : libxml2-static-2.9.1-6.el7.4.x86_64 2/11
Verifying : libxml++-devel-2.37.1-1.el7.x86_64 3/11
Verifying : glibmm24-2.56.0-1.el7.x86_64 4/11
Verifying : libsigc++20-devel-2.10.0-1.el7.x86_64 5/11
Verifying : libsigc++20-2.10.0-1.el7.x86_64 6/11
Verifying : perl-XML-Parser-2.41-10.el7.x86_64 7/11
Verifying : libxml++-2.37.1-1.el7.x86_64 8/11
Verifying : glibmm24-devel-2.56.0-1.el7.x86_64 9/11
Verifying : libsigc++20-doc-2.10.0-1.el7.noarch 10/11
Verifying : libxml++-doc-2.37.1-1.el7.noarch 11/11
Installed:
libxml++.x86_64 0:2.37.1-1.el7 libxml++-devel.x86_64 0:2.37.1-1.el7
libxml++-doc.noarch 0:2.37.1-1.el7 libxml2-static.x86_64 0:2.9.1-6.el7.4
Dependency Installed:
glibmm24.x86_64 0:2.56.0-1.el7 glibmm24-devel.x86_64 0:2.56.0-1.el7
glibmm24-doc.noarch 0:2.56.0-1.el7 libsigc++20.x86_64 0:2.10.0-1.el7
libsigc++20-devel.x86_64 0:2.10.0-1.el7 libsigc++20-doc.noarch 0:2.10.0-1.el7
perl-XML-Parser.x86_64 0:2.41-10.el7
Complete!
[root@ecs-0000 soft]# /www/server/php/72/bin/phpize
Cannot find config.m4.
Make sure that you run '/www/server/php/72/bin/phpize' in the top level source directory of the module
[root@ecs-0000 soft]# php -v
PHP 7.2.31 (cli) (built: Jul 15 2020 13:52:43) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
[root@ecs-0000 libetotpverify]# vim Makefile
[root@ecs-0000 libetotpverify]#
[root@ecs-0000 libetotpverify]#
[root@ecs-0000 libetotpverify]# make
gcc -shared -o php_otpverify.so php_otpverify.o -L/usr/local/lib -L/usr/lib -L. -letotpverify -rdynamic
/usr/bin/ld: skipping incompatible ./libetotpverify.so when searching for -letotpverify
[root@ecs-0000 libetotpverify]# dir
libetotpverify.so otp_interface.h php_otpverify.h php_otpverify.so
Makefile php_otpverify.c php_otpverify.o