PECLを試す(も失敗に終わる)

CORESERVERPHP

PECLを試す(も失敗に終わる)

 状態:不明  閲覧数:2,218  投稿日:2012-05-28  更新日:2013-06-20
結論
PECL(?)試すもうまくいかず。
geo-ipのCを試そうとするもやり方分からず。うまくいかない。
結局、PHP(ライブラリ?)ファイルで、geo-ipを試した際のメモ書き。
「make」とか色々書いているけど、そこら辺全部失敗してますから!
  
PECLを試す。

前回(2年前)は失敗。今回はどうかしら?
富士山マガジンサービスAPI : は行 : API : 用途別 | PHPStyle

参考サイト
coreserverで独自拡張モジュール 続き - Usagi Project

>coreserverでcgi版で動かすのであれば、PECL拡張モジュールも使えるのでは?と思いついて始めた実験ですが、うまくいったので報告してみます
cgi版じゃなきゃダメなのかしら?


<前回>
・yumコマンド利用
→共用レンタルサーバーで、管理者用のコマンドyumをユーザーが使えるわけがない
・PearのPackage Management画面利用
→うまくいかなかった。理由不明
・peclコマンド利用
→うまくいかなかった。理由不明

<今回予定>
・ソースを展開し展開したディレクトリに移動
・通常はmake installでインストールできるが、/usr/local/lib/〜へインストールしようとするので
mkdir /virtual/(account)/local/lib/php/extensions
として、
cp ○○ /virtual/(account)/local/lib/php/extensions
と手動コピー
php.iniに
extension_dir="/virtual/(account)/local/lib/php/extensions"
extension=○○

<開始>
1.管理画面よりホスト情報をSSH登録


2.Poderosa接続


3.ソース(GeoIP-1.4.8.tar.gz)ダウンロード
:~> ls
:~> cd lib
:~/lib> mkdir download
:~/lib> cd download/

■ソースをダウンロード
:~/lib/download> wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.8.tar.gz

■ダウンロードしたソースを、指定ディレクトリへコピー
:~/lib/download> cp GeoIP-1.4.8.tar.gz /virtual/○○/lib/php/extensions/

■ソースコピーしたディレクトリへ、移動
:~/lib/download> cd /virtual/○○/lib/php/extensions/

■確認
:~/lib/php/extensions> ls
GeoIP-1.4.8.tar.gz

■ソースを解凍展開
:~/lib/php/extensions> tar zxvf GeoIP-1.4.8.tar.gz

■確認
:~/lib/php/extensions> ls
GeoIP-1.4.8  GeoIP-1.4.8.tar.gz

:~/lib/php/extensions> cd GeoIP-1.4.8
:~/lib/php/extensions/GeoIP-1.4.8>

:~/lib/php/extensions>./configure
:~/lib/php/extensions>make
:~/lib/php/extensions>make install
libtool: install: /usr/bin/install -c .libs/libGeoIP.so.1.4.8 /usr/local/lib/libGeoIP.so.1.4.8
/usr/bin/install: cannot create regular file `/usr/local/lib/libGeoIP.so.1.4.8': Permission denied→レンタルサーバー領域へインストールしようとして権限ないから、と怒られる。ダメ

:~/lib/php/extensions>./configure --prefix=/virtual/○○/lib/php/extensions
:~/lib/php/extensions>make
:~/lib/php/extensions>make install
libtool: install: /usr/bin/install -c .libs/libGeoIP.lai /virtual/○○/lib/php/extensions/lib/libGeoIP.la
libtool: install: error: cannot install `libGeoIPUpdate.la' to a directory not ending in /usr/local/lib
→ダメ
エラーメッセージで検索
[Ntop] GeoIP Problem during config
>Is this during "make install"? If so, are you running as root? You  
need to be root during install phase.
ルート権限がないとダメらしい。
そうなの?

正直、いつまで経っても、「make」とか「make install」とか「configure」が分からない。

とりあえず、この方法は諦め、当初の予定通り、iniを使った方法を試してみる。

▼php.ini
extension=geoip.so

Fatal error: Call to undefined function geoip_record_by_name() in /virtual/○○/demo/geoip/index.php on line 24

「geoip_record_by_name」を読み込めていないのかと思って、適当にincludeパスを追加してみたけど、ダメ。
そもそも「geoip_record_by_name」関数てどこにあるんだ? と思いグレ検するも見つからず。

APIだから?

もー、びーっくりするぐらい、どーしていいか、全然分からない。

ー終了ー

Index of /download/geoip/api/c/
PHPでGeoIPを使えるようにする(インストール手順など) - cloned.log
phpでIPアドレスから都道府県名を取得する/ - サイブリッジラボ

手仕舞いしようと思ったら、php用のディレクトリがあることに気が付いたので、試してみることにする。
:~/lib/download> wget http://www.maxmind.com/download/geoip/api/php/php-1.11.tar.gz
--2012-05-28 22:11:47--  http://www.maxmind.com/download/geoip/api/php/php-1.11.tar.gz
Resolving www.maxmind.com... 174.36.207.186
Connecting to www.maxmind.com|174.36.207.186|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 50982 (50K) [application/octet-stream]
Saving to: `php-1.11.tar.gz'

100%[===============================================================>] 50,982       109K/s   in 0.5s  

2012-05-28 22:11:49 (109 KB/s) - `php-1.11.tar.gz' saved [50982/50982]

cp php-1.11.tar.gz /virtual/○○/lib/php/extensions/

:~/lib/php/extensions> tar zxvf php-1.11.tar.gz

sample.phpへアクセスするもエラー。
Warning: fopen(/usr/local/share/GeoIP/GeoIP.dat) [function.fopen]: failed to open stream: No such file or directory in /virtual/○○/public_html/phpnote.w4c.work/demo/geoip/php-1.11/geoip.inc on line 385
Can not open /usr/local/share/GeoIP/GeoIP.dat


:~/lib/download>  wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
--2012-05-28 22:21:13--  http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
Resolving www.maxmind.com... 174.36.207.186
Connecting to www.maxmind.com|174.36.207.186|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://131.220.6.26/download/geoip/database/GeoIP.dat.gz [following]
--2012-05-28 22:21:15--  http://131.220.6.26/download/geoip/database/GeoIP.dat.gz
Connecting to 131.220.6.26:80...

つながらない。
Index of /download/geoip/database/
httpで落とす
GeoIPv6.dat.gz
GeoLiteCity.dat.gz      


Fatal error: error traversing database - perhaps it is corrupt? in /virtual/○○/demo/geoip/php-1.11/geoip.inc on line 606

MaxMind Forum • View topic - Error traversing database - perhaps it is corrupt?

データベースが必要なの?

と言うか、もしかして、これって、Wordpress用?

全然分かんないので、
今度こそ本当に
ー終了ー


片付け始めてから、ダメ元で色々やっていってたら、何か、イケたかも?

「sample.php」は真っ白だけど、
「sample-v6.php」には、国が表示されてる。
US United States ES Spain US United States CZ Czech Republic EU Europe AU Australia

echo geoip_country_code_by_name_v6($gi, "ipv6.google.co.jp") . "\t" .
    geoip_country_name_by_name_v6($gi, "ipv6.google.co.jp") . "\n";  
追記したら、日本て表示されると思ったけど、
AU Australia?

なんだ、動いてないのか…。

echo geoip_country_code_by_name_v6($gi, "ipv6.yahoo.co.jp") . "\t" .
    geoip_country_name_by_name_v6($gi, "ipv6.yahoo.co.jp") . "\n";  
だと何も追加表示されない。

echo geoip_country_code_by_name_v6($gi, "yahoo.co.jp") . "\t" .
    geoip_country_name_by_name_v6($gi, "yahoo.co.jp") . "\n";  
でもダメ。

最後に、
「ipconfig」で確かめた自分の「IPv6 アドレス」入力してみたが、
何も追加表示されなかった。

全然わかんねー!!!

と思い、今後こそ止めようと思い、ふと見たら、「IPv6 アドレス」が2つあることに気付く。
試しに、もうひとつのヤツを入れたら、無事、「JP Japan」と表示された。

どうやら、最初は、違う「IPv6 アドレス」で試してしまったらしい。
大体、なんで二つあるの?
イーサネット アダプター ローカル エリア接続 2:
  接続固有の DNS サフィックス . . . :
  IPv6 アドレス . . . . . . . . . . . : ○

Tunnel adapter Teredo Tunneling Pseudo-Interface:

  接続固有の DNS サフィックス . . . :
  IPv6 アドレス . . . . . . . . . . . : ✕

ここら辺調べだすと時間かかりそうなので、とりあえず、先へ進む。

正直、IPから国とか分かってもあんま嬉しくない。世界展開したサービスを運営しているわけでもないので。
sample_city-v6.php
試すも、画面真っ白。
嫌な予感がするが、先程調べた自分の「IPv6 アドレス」を入力したら、
無事、都市まで表示された。

オッケー!

ちなみに、今回利用した関数は、
・geoip_country_code_by_addr_v6
・geoip_country_name_by_addr_v6
・geoip_record_by_addr_v6

でも、phpマニュアル見ても、そんな関数はないっぽいんだけど…
PHP: GeoIP - Manual

APIでつながった先でperlが動いてるの?
cpansearch.perl.org/src/BORISZ/Geo-IP-1.39/Changes

動いたっぽいのはいいけど、
どーいう仕組みで動いているのかさっぱり分からない!!!!

・2013/6/20 … デモ削除


<次回予定>
PECL::GeoIPを試してみた - Do You PHP はてな
>無償のデータベースだと、国・都市情報までしか取れないか。。。より詳細なデータが欲しい場合は商用ライセンスが必要だそうで。
>ちなみに、日本の場合、緯度・経度の精度は高くないようです。
PHP: geoip_record_by_name - Manual


phpMyAdmin-3.5.0

MeCab