I fallow to this guide:
https://stackoverflow.com/a/34185462/20508390
First I install via composer this library:
https://github.com/maxmind/GeoIP2-php Now I see vendor folder in codeigniter
public_html/vendor/maxmind public_html/vendor/maxmind-db public_html/vendor/geoip2 Fallowed to documentation I copy all files from: public_html/vendor/geoip2/geoip2/src/
to
public_html/application/third_party/GeoIp2/vendor/GeoIp2/ here I put folders and files from src directory :
Database Exception Model Record WebService ProviderInterface.php Util.php Now inside /application/libraries I created a file called CI_GeoIp2.php and add the following code.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * GeoIp2 Class * * @package CodeIgniter * @subpackage Libraries * @category GeoIp2 * @author Timothy Marois <[email protected]> */ require_once( APPPATH . 'third_party/GeoIp2/vendor/autoload.php' ); use GeoIp2\Database\Reader; class CI_GeoIp2 { protected $record; protected $database_path = 'third_party/GeoIp2/GeoIP2-City.mmdb'; public function __construct() { $ci =& get_instance(); $reader = new Reader(APPPATH.$this->database_path); $ip = $ci->input->ip_address(); if ($ci->input->valid_ip($ip)) { $this->record = $reader->city($ip); } log_message('debug', "CI_GeoIp2 Class Initialized"); } /** * getState() * @return state */ public function getState() { return $this->record->mostSpecificSubdivision->name;; } /** * getState() * @return country code "US/CA etc" */ public function getCountryCode() { return $this->record->country->isoCode; } /** * getCity() * @return city name */ public function getCity() { return $this->record->city->name; } /** * getZipCode() * @return Zip Code (#) */ public function getZipCode() { return $this->record->postal->code; } /** * getRawRecord() * (if you want to manually extract objects) * * @return object of all items */ public function getRawRecord() { return $this->record; } } Then I get error:
application/third_party/GeoIp2/vendor/autoload.php): failed to open stream: No such file or directory The problem is I cannot locate any autoload.php in public_html/vendor/geoip2 I not see this file. I checked other folders and I found autoload.php here public_html/vendor/maxmind-db
So I copy this autoload.php and paste in:
public_html/application/third_party/GeoIp2/vendor/autoload.php After refresh page now I see issue:
Message: Class 'GeoIp2\Database\Reader' not found I checked and I see:
public_html/application/third_party/GeoIp2/vendor/GeoIp2/Database/Reader.php also I copy public_html/vendor/maxmind-db content from src. to
applicaiton/third_party/GeoIp2/vendor/MaxMind and this still not resolve issue.
For summary, currently I have this structure:
/application ├── third_party │ ├── GeoIp2 │ │ ├── vendor │ │ ├── composer.json │ │ │ ├── GeoIp2/Database Exception Model Record WebService ProviderInterface.php Util.php │ │ │ ├── MaxMind/DB/Reader Reader.php │ │ │ ├── autoload.php