centos7 系统,php71 如何安装 GeoIP 扩展
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔相信,对于pecl扩展,应该大多数人都有多多少少的排斥心理。因为毕竟调试和安装都不是太容易。如果您使用window环境,那么使用phpstudy
,来管理和启用pecl
扩展,是蛮方便的事情。如果你使用linux
环境,那么使用宝塔面板,那么也是不错的选择。
本文测试环境:centos7
+php71
+宝塔面板
。
方案1:下载成品geoip
扩展
但是,这两个很简单的选择的背后,如果碰上里面并没有内置的pecl
扩展的话,掩盖在美好背后的事实,就变得狰狞起来了。你需要到pecl.php.net
上面,去下载对应扩展的dll
,而且要注意和你的php搭配,有nts
和ts
区分,有vc10
/vc11
之类的区分,有dll
和so
之类的区分。一个不留神,就搞错了。
GeoIp
的相关扩展下载位置:http://pecl.php.net/package/geoip 。
方案2:自行编译安装geoip
当然,你也可以像本文中所提到的一样,自行编译扩展文件并启用。这样是最保险的办法。不过,过程不是很简单。下面的脚本,是苏南大叔多次实验得出的结论。实际执行的时候,可能需要你一条一条执行,请不要一次性都塞到终端里面。
脚本如下:
yum install GeoIP GeoIP-data GeoIP-devel
wget http://pecl.php.net/get/geoip-1.1.1.tgz
tar zxvf geoip-1.1.1.tgz
cd geoip-1.1.1
/www/server/php/71/bin/phpize
./configure --with-php-config=/www/server/php/71/bin/php-config --with-geoip
make && make install
上述命令,是苏南大叔在 ~
目录下面操作的,也就是说,上述命令的发生地址是:/root/
。
/www/server/php/71
这个路径,是宝塔面板里面自带的php71
的默认路径,你可以根据你的实际情况更改。geoip-1.1.1.tgz
这个文件地址路径,是苏南大叔从pecl
扩展网站 http://pecl.php.net/package/geoip 这里获得的。
编译完成后,就可以得到一个geoip.so
文件了,然后利用php.ini
愉快的加载geoip.so
吧。
下载数据dat文件
安装成功后,记得下载对应的数据库dat
文件。
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d GeoLiteCity.dat.gz
mv GeoLiteCity.dat /var/lib/GeoIP/GeoIPCity.dat
这个dat
文件最终要mov
到什么位置,这个和您自己的系统有关系。
请自行检查php.ini
中的geoip.custom_directory
相关设置。例如在piwik
系统中,就是修改了geoip.custom_directory
的位置的。修改的办法,有很多种,相信经常关注苏南大叔系列文章的同学,都会修改的。
针对苏南大叔所述的范例来说,我的php.ini
里面就应该有一条配置项目是:
geoip.custom_directory="/var/lib/GeoIP/"
当然了,这个目录你可以随便换成任何你喜欢的目录。记得修改php.ini即可,咩有的话,随便加一条就行了。
相关链接
- piwik如何开启geoip,请点击这里。https://newsn.net/say/piwik-geoip-visitor-info.html
- geoip的相关介绍,请点击这里查看。http://doc.php.sh/zh/book.geoip.html
结论
如果您的环境,和苏南大叔的环境一致的话,那么您也可以直接下载得到本文中涉及的geoip.so
文件,http://dl.newsn.net/php/pecl/php71/geoip.so ,也许您就可以不必那么麻烦去编译这个东西了。centos
下面的编译总是异常痛苦的。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
按照这个教程安装后有几个问题,我也是用的宝塔,centos7系统
1,mv GeoLiteCity.dat /var/lib/GeoIP/GeoIPCity.dat 我这里/var/lib/上面并没有GeoIP文件夹。。。
2,我装的是matomo.org上最新的版本,后台――地理位置――这里并没有Geoip1,只有Geoip2,显示未安装,Geoip2要在centos上怎么安装?
https://newsn.net/say/piwik-geoip2.html
脚本不对啊
[root@test3 geoip-1.1.1]# ./configure --with-php-config=/www/server/php/70/bin/php-config --with-geoip
-bash: ./configure: No such file or directory
还有啊,脚本第5个命令/www/server/php/71/bin/phpize这个是干啥的?没有执行命令啊。
在下载好的脚本里面执行,才会有configure。
phpize是编译php扩展的必备命令。
老苏帮我看看,我也是用宝塔的,可是编译的提示是这样:
cc -I. -I/root/geoip-1.1.1/geoip-1.1.1 -DPHP_ATOM_INC -I/root/geoip-1.1.1/geoip-1.1.1/include -I/root/geoip-1.1.1/geoip-1.1.1/main -I/root/geoip-1.1.1/geoip-1.1.1 -I/www/server/php/71/include/php -I/www/server/php/71/include/php/main -I/www/server/php/71/include/php/TSRM -I/www/server/php/71/include/php/Zend -I/www/server/php/71/include/php/ext -I/www/server/php/71/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/geoip-1.1.1/geoip-1.1.1/geoip.c -fPIC -DPIC -o .libs/geoip.o
env: cc: Permission denied
make: *** [geoip.lo] Error 1
还有我觉得你文中这一步说得不太清楚:请自行检查php.ini中的geoip.custom_directory相关设置。
楼上的兄弟,我把我编译好的so文件地址,放在文章的末尾了。你直接下载好了,就不用编译了。关于另外的那个设置问题,我也又详细的写了写。你再瞅瞅。嘿嘿,其实我的geoip.so是给piwik使用的,用不着这个php.ini里面的设置,所以,我就没仔细写。你懂的。