2

I can't get the GeoIP PHP extension working on CentOS 7 and PHP 5.5.21.

I first started with yum install php-pecl-geoip and restarted httpd. I then did a simple test:

$record = geoip_record_by_name($_SERVER["REMOTE_ADDR"]);
if ($record) {
    print_r($record);
}

I got an error 500, and in the error log, I see

PHP Fatal error: Call to undefined function geoip_record_by_name()

So I figured the yum package was bad and removed it. I then did pecl install geoip and enabled the extension /etc/php.d/geoip.ini with extension=geoip.so and restarted httpd. Same error - undefined function.

To make sure the install was correct, I tried the pecl install again and received this output:

pecl/geoip is already installed and is the same as the released version 1.0.8

I do have Apache's mod_geoip installed. Do the 2 conflict with each other?

What else can I check?

Pat
  • 274
  • 3
  • 14
  • Are you using PHP as an Apache module? – Michael Hampton Oct 18 '16 at 16:18
  • @MichaelHampton PHP was installed as part of yum. I do see `LoadModule php5_module modules/libphp55-php5.so` in `/etc/httpd/conf.modules.d/10-php55-php.conf`, so I am going to say Yes PHP is loaded as an Apache module. – Pat Oct 18 '16 at 16:24

1 Answers1

1

It looks like you've obtained PHP 5.5 from Red Hat Software Collections. Unfortunately this SCL doesn't include the PECL geoip extension, so you will need to install it yourself.

scl enable php55 'pecl install geoip'
Michael Hampton
  • 237,123
  • 42
  • 477
  • 940
  • This looks promising, but I get this error when I try that command as root: `Unable to open /etc/scl/conf/pecl!`. I think we're onto something but unsure what to do next. – Pat Oct 18 '16 at 16:28
  • OK, maybe you didn't use a Software Collection. Where exactly _did_ you get PHP from? – Michael Hampton Oct 18 '16 at 16:34
  • `yum info php55` returns the following info: `From repo : centos-sclo-rh` – Pat Oct 18 '16 at 16:41
  • 1
    @Pat Oops, it's my fault, I forgot the command needs to be quoted. – Michael Hampton Oct 18 '16 at 16:43
  • Your edited command definitely did something. Still no joy. `Installing '/opt/rh/php55/root/usr/lib64/php/modules/geoip.so'` and `extension=geoip.so` exists in /etc/php.d/geoip.ini. Still getting undefined function. – Pat Oct 18 '16 at 16:45
  • Ah, I found I had to add `extension=geoip.so` to `/opt/rh/php55/root/etc/php.d/geoip.ini`. I'm still a little confused about what SCL is (and why it's different than previous PHP installations; but that's another topic). Everything works now. Thanks! – Pat Oct 18 '16 at 16:48
  • @Pat See for instance [Software Collections Guide](https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/2/html/Software_Collections_Guide/index.html). – Michael Hampton Oct 18 '16 at 16:50