徒然なるままに

個人の備忘録を中心としたブログです

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
まずDSOの.soファイルを格納するディレクトリを
phpinfo()のextension_dirの項目から確認します。
デフォルトで
/usr/lib/php/extensions/no-debug-non-zts-20*********
のように指定されていると思うので、この中に後で作成した.soをコピーします。


このディレクトリが存在しないなら、自分が分かりやすいextension_dirを作成するとよいでしょう。
自分はext/を作成しました。
$sudo mkdir /usr/local/lib/php/ext


その場合php.iniを編集して、extension_dirの項目を書き換えます。
php.ini
-------------------------------------------------------------------
extension_dir = "/usr/local/lib/php/ext"
-------------------------------------------------------------------

.soファイルを作るためにphpizeというコマンドが用意されています。
phpizeは.soを作るためのconfigureを生成します。

手順は、
1、PHPをインストールした時のソースにext/という拡張モジュール用のディレクトリがあるので
目的の拡張モジュールに対応したディレクトリ(ここではmysqli)に移動
2、phpizeを実行
3、make
4、modules/mysqli.soが生成される
となっています。

$ cd /usr/local/src/php-5.4.13/ext/mysqli/
$ phpize
$ ./configure --with-mysqli=/usr/local/mysql/bin/mysql_config
$ make


ここでmysqli/modulesにmysqli.soが作られているはずです。
あとはこれをext/にコピーします。

$ cp modules/mysqli.so /usr/local/lib/php/ext/


php.iniでmysqli拡張を有効にします。
extension=mysqli.so

mysqli拡張が有効になっていればphpinfo()でmysqliの項目が追加されているはずです。

(参考にしたサイト)
http://www.hackthissite.org/articles/read/948
スポンサーサイト
PHPがインストールできたら、PHP.iniを編集することで細かい設定を変更できます。

インストール後にまずやるべきことはphpinfo()で表示された
Configuration File (php.ini) Path の項目を確認します。
ソースからインストールした場合はおそらく/usr/local/libになっていると思います。

といってもソースからインストールした場合、自動でphp.iniが作成されているわけではないので
ソースのディレクトリから
./php.ini-development、./php.ini-production
のどちらかをphp.iniとリネームして/usr/local/lib等にコピーすることになります。
developmentが開発環境用、productionが実際に運用する上でのデフォルトphp.iniファイルとなっています。

ここでは、php.ini-developmentを選びます。
sudo cp PHP_SRC(ソース)/php.ini-development /usr/local/lib/php.ini


その後は必要に迫られてphp.iniを編集していけばよいのですが
とりあえず最低限の設定をしておきましょう。基本コメントアウトを外してちょっと記述すればいいようになっています。

php.ini
-----------------------------------------------------------------------
[PHP]



; PHP's default character set is set to empty.
; http://www.php.net/manual/en/ini.core.php#ini.default-charset
default_charset = "UTF-8"



[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"



[mbstring]
; language for internal character representation.
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.language
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype=
-----------------------------------------------------------------------
http://unixlife.jp/unixlife/linux/s-php1.jspを参考にさせてもらいました。

apacheを再起動させて、phpinfo()の内容が更新されていることを確認します。
(注)
また、このエントリーは適当に試行錯誤した結果、うまくいっちゃった程度の内容が含まれます。
備忘録として試行錯誤を書き残しては置きますが、あくまで参考程度にしてください。

一応、原因が分かりました。

Apacheやmysqlが組み込まれていることを前提とします。

公式:http://www.php.net/manual/ja/install.unix.apache2.php
のやり方にそってインストールしましょう。

wget http://www.php.net/get/php-5.4.13.tar.gz/from/a/mirror
mv mirror php-5.4.13.tar.gz


MySQLのデータと連動させて、グラフを描くためにいろいろオプションを指定しています。
configureオプションは、http://phpspot.net/php/pgUNIX%E7%92%B0%E5%A2%83%E3%81%B8%E3%81%AEPHP5%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.htmlを使わせてもらいました。
とりあえずPHPプログラムが実行できればいいというのであれば、--with-zlib-dir以降を削除しても構いません。

GDに関しては、PHP5にバンドルされているものを使うとします。

$ sudo ./configure --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring \
--enable-mbsrt-enc-trans --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql \
--with-zlib-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-jpeg-dir=/usr/local/lib \
--with-freetype-dir=/usr/local/lib --with-gd --enable-gd-native-ttf --with-pdo-mysql=/usr/local/mysql


エラーが出たら求められているライブラリをインストールする必要があります。
本来はソースから/usr/local/あたりに一つ一つインストールするべきなのでしょうが
ライブラリの数が多いのでめんどうくさくなって
php5-gd,libxml2-dev,libjpeg-dev,libpng++-dev,libfreetype6-dev辺りを「pt-get install」したらなんかできてしまった。
もちろん/usr/local/libにインストールされている様子はない。

(追記)
configureで/usr/includeを勝手に読んでくれていたみたい。/usr/include/freetype2/freetype,/usr/include/libpng,/usr/include/libpng2などなど。
つまり、configureでのインクルードパス指定は形骸化していたわけですね


まあ通ったなら一度インストールしてみるかとういことで
$ sudo make
$ sudo make install


make時に早速エラー:fatal error: libxml/parser.h: no such file or directory
libxml2はちゃんとソースからインストールしたはずなんだけど・・・。
実行時のインクルードパスを見ると-I/usr/local/include/libxml2とあり、
結果は自分がlibxml2を/usrにインストールしていたのが悪かったみたい。
cp /usr/include/libxml2 /usr/local/include/libxml2

したら通りました。

(追記)
そう。makeさんは/usr/includeを読んでくれていなかったのです^^
Makefileを見ると CFLAGS_CLEAN = -I/usr/include -g -O2 -fvisibility=hidden
の記述はあるのですが、また別なのでしょうね。


info.phpを以下の内容で作成。
<?php phpinfo(); ?>

info.phpをApacheのDocRootにおいて
Apacheの再起動をかけて、いろいろ情報が出ればPHPのインストールはOK。

gdについてのオプションでsupport JPEGやsupport PNGなどがOKになっていることを見ておきましょう。


(追記)
そもそも、ライブラリをソースから入れるのに躊躇したのは
PHP5にバンドルされていないGDを使おうとしていたからです。
GDライブラリの公式ではソースの公開を停止しており、
各ディストリビューションでパッケージからのインストールを推奨しています。
ソースはあるようなのですが、現在フォーラムのような形で有志が更新しているのか
configureがなく、cmakeを使うような形になっていたよう?なので導入時に不安が残り見送ったというわけです。

余裕が出来たので、http://d.hatena.ne.jp/rougeref/20070208を参考にさせてもらい
後から試しにlibpngを入れてみましたが普通にうまくいったので、残りの三つもソースからインストールすればよかったと思います。
その場合libjpeg,libpng,freetype2について、configureの際に--enable-sharedを忘れずに。
これを忘れるとphp5のconfigureで怒られてしまいます。

libpngのソースコードの場所だけ分かりにくかったのでおいておきます。
http://www.libpng.org/pub/png/libpng.html


(参考にしたサイト)

http://www.gadgety.net/shin/tips/unix/php-gd.html




kamiyasu

Author:kamiyasu

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。