php5

php5.x系のサポートが切れて久しく、Apacheから文句言われた(´・ω・`)
仕方ないので、重い腰を上げてPHP5.xを作るコトにした(`・ω・´)
「サポートが切れた」
かなり前に切れてるんですが・・・ まぁ、libxml2を作るのが面倒臭かったので、ほったらかしだったんです。
いろいろ弄って(たぶん合計で1年くらい?)ようやく作れるようになったと思うのでうp

やること一覧
	・事前に必要になるソフトのインストールPHP でグラフを作る (gd/JpGraph編)PHP5のインストール

関連ページ
	・apache2



事前に必要になるソフトのインストール

pythonのコンパイルにC/ObjC(オブジェクト指向型Cのコンパイラ)が必要になるので、
gcc3のインストールにて、フル版(--enable-languages=c,c++の指定なし)を作る必要がある


zlib/opensslはopensslか参考サイトを参照。
説明はばっさりと割愛。でも、gccを入れ替えたら必ず作り直しです(・ω・)b

事前準備の事前準備その1)
JPEG グラフィックスフォーマット用のライブラリ
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

	$ tar xvfz jpegsrc.v6b.tar.gz
	$ cd jpeg-6b
	$ ./configure --prefix=/usr --enable-shared --enable-static
	$ make
	# make install
インストールされるもの
	/usr/bin/*jpeg*
	/usr/bin/*jpgcom
	/usr/include/jconfig.h
	/usr/include/jerror.h
	/usr/include/jmorecfg.h
	/usr/include/jpeglib.h
	/usr/lib/libjpeg.*
	/usr/man/???
おまじない
	# strip -p /usr/bin/*jpeg*
	# strip -p /usr/bin/*jpgcom
事前準備の事前準備その2)
TrueTypeフォントをレンダリングするライブラリ
http://www.freetype.org/
	$ tar xvfz freetype-2.3.4.tar.gz
	$ cd freetype-2.3.4
	$ ./configure --prefix=/usr
	$ make
	# make install
インストールされるもの
	/usr/bin/freetype-config
	/usr/include/freetype2/
	/usr/include/ft2build.h
	/usr/lib/libfreetype.*
	/usr/lib/pkgconfig/freetype2.pc
	/usr/share/aclocal/freetype2.m4
事前準備)
gdのインストール
http://www.libgd.org/Main_Page
	$ tar xvfz gd-2.0.34.tar.gz
	$ cd gd-2.0.34
	$ ./configure --prefix=/usr
		┃** Configuration summary for gd 2.0.34:
		┃
		┃   Support for PNG library:          yes
		┃   Support for JPEG library:         yes
		┃   Support for Freetype 2.x library: yes
		┃   Support for Fontconfig library:   no
		┃   Support for Xpm library:          no
		┃   Support for pthreads:             yes
	$ make
	# make install
インストールされるもの
	/usr/bin/
	 annotate webpng gdlib-config gdtopng gdcmpgif gdparttopng
	 gd2copypal gd2topng gd2togif pngtogd bdftogd giftogd2 pngtogd2
	/usr/include/
	 entities.h entities.h gd_io.h gdfontg.h gdfontmb.h gdfontt.h
	 gd.h gdcache.h gdfontl.h gdfonts.h gdfx.h
	/usr/lib/libgd.*
おまじない
	# cd /usr/bin
	# strip -p annotate webpng gdtopng gdcmpgif gdparttopng gd2copypal \
	gd2topng gd2togif pngtogd giftogd2 pngtogd2
まだまだ続くよ!(`・ω・´)

(libxml2の事前準備)
Python-2.7.6
1回目
	$ wget --no-check-certificate http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
	$ tar xvfz Python-2.7.6.tgz
	$ cd Python-2.7.6
	$ ./configure --prefix=/usr --enable-shared
	$ make
	$ make test
		┃350 tests OK.
		┃3 tests failed:
		┃    test_distutils test_openpty test_pty
		┃44 tests skipped:
		┃    test_aepack test_al test_applesingle test_bsddb185 test_bsddb3
		┃    test_cd test_cl test_codecmaps_cn test_codecmaps_hk
		┃    test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
		┃    test_epoll test_gdb test_gl test_idle test_imgfile test_ioctl
		┃    test_kqueue test_linuxaudiodev test_macos test_macostools
		┃    test_msilib test_multiprocessing test_ossaudiodev test_pep277
		┃    test_scriptpackages test_smtpnet test_socketserver test_sqlite
		┃    test_startfile test_sunaudiodev test_tcl test_timeout test_tk
		┃    test_ttk_guionly test_ttk_textonly test_unicode_file
		┃    test_urllib2net test_urllibnet test_winreg test_winsound
		┃    test_zipfile64
		┃9 skips unexpected on linux2:
		┃    test_epoll test_gdb test_idle test_ioctl test_multiprocessing
		┃    test_tcl test_tk test_ttk_guionly test_ttk_textonly
		┃make: *** [test] Error 1
		エラーになりますけど・・・まぁ、いっか。

	# make install
2回目
	$ make clean
	$ ./configure --prefix=/usr
	$ make
	# make install
		2回コンパイルする理由はPython-2.7.2, Python-3.2.1のインストール(Linux)を参照。
libxml2-2.9.1の作成
	$ wget http://xmlsoft.org/sources/libxml2-2.9.1.tar.gz
	$ tar xvfz libxml2-2.9.1.tar.gz
	$ cd libxml2-2.9.1
	$ ./configure --prefix=/usr
	$ make
	$ make check
		(結果)
		┃[ -d result ] || ln -s ./result .
		┃./runtest &&  ./testrecurse && ./testapi &&  ./testchar&&  ./testdict &&  ./runxmlconf
		┃File ./test/ebcdic_566012.xml generated an error
		┃File ./test/ebcdic_566012.xml generated an error
		┃File ./test/ebcdic_566012.xml generated an error
		┃Result for ./test/ebcdic_566012.xml failed
		┃File ./test/ebcdic_566012.xml generated an error
		┃Result for ./test/ebcdic_566012.xml failed
		┃File ./test/ebcdic_566012.xml generated an error
		┃Result for ./test/ebcdic_566012.xml failed
		┃File ./test/ebcdic_566012.xml generated an error
		┃Failed to parse ./test/ebcdic_566012.xml
		┃File ./test/ebcdic_566012.xml generated an error
		┃Failed to parse ./test/ebcdic_566012.xml
		┃File ./test/ebcdic_566012.xml generated an error
		┃Failed to parse ./test/ebcdic_566012.xml
		┃File ./test/ebcdic_566012.xml generated an error
		┃Failed to parse ./test/ebcdic_566012.xml
		┃File ./test/ebcdic_566012.xml generated an error
		┃## XML regression tests
		(中略)
		┃## Catalog and Threads regression tests
		┃Total 2876 tests, 10 errors, 0 leaks
		┃make: *** [runtests] Error 1
			作れるようになったけど、10個のエラー
			2.7.xは同じ状態。2.6.xはcheck自体がエラーで止まる。
			・・・まぁ、いっか。
		
		もし、以下のようなエラーで終了する場合、zlibがおかしくなっている可能性がある
			(右、はみ出すよね?)
			┃make[1]: Leaving directory `/mnt/home/rutiferu/libxml2-2.9.1'
			┃[ -d test   ] || ln -s ./test   .
			┃[ -d result ] || ln -s ./result .
			┃./runtest &&  ./testrecurse && ./testapi &&  ./testchar&&  ./testdict &&  ./runxmlconf
			┃/home/rutiferu/libxml2-2.9.1/.libs/lt-runtest: /usr/lib/libz.so.1: no version information available (required by /home/rutiferu/libxml2-2.9.1/.libs/libxml2.so.2)
			┃/home/rutiferu/libxml2-2.9.1/.libs/lt-runtest: /usr/lib/libz.so.1: no version information available (required by /home/rutiferu/libxml2-2.9.1/.libs/libxml2.so.2)
			┃/home/rutiferu/libxml2-2.9.1/.libs/lt-runtest: error while loading shared libraries: /home/rutiferu/libxml2-2.9.1/.libs/libxml2.so.2: symbol gzopen64, version ZLIB_1.2.3.3 not defined in file libz.so.1 with link time reference

		ライブラリのリンクを直せば良い(1.2.8の数字はインストールしたバージョン)
			# cd /usr/lib
			# rm libz.so.1
			# ln -s libz.so.1.2.8 libz.so.1
			# rm libzbag*
				分らなかったら、libz*を削除してzlibを再インストールする

	# make install
(bisonの事前準備)
autoconfのm4のアップデートを行う必要がある。

bison-2.7.1の作成
	$ wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/bison/bison-2.7.1.tar.gz
	$ tar xvfz bison-2.7.1.tar.gz
	$ cd bison-2.7.1
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
re2c-0.13.6の作成(注:bisonが必要)
	$ wget http://sourceforge.net/projects/re2c/files/re2c/0.13.6/re2c-0.13.6.tar.gz/download
	$ tar xvfz re2c-0.13.6.tar.gz
	$ cd re2c-0.13.6
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
あうあう・・・(;´Д`)はぁはぁ
「事前準備の事前準備」
とにかく、玄箱は何も入っていない。
あるものをコンパイルしようと思うと別のものが必要になる。
で、その別のものをコンパイルしようと・・・
と、はまっていくわけですよ。

大抵、3段以上になると別のどこかがおかしいはずですけどね。
まぁ、3段になると必要なソフトの数が多すぎてコンパイルする気力がなくなりますがw

PHP5のインストール

	$ wget http://jp1.php.net/get/php-5.5.17.tar.gz/from/this/mirror
	$ tar xvfz php-5.5.17.tar.gz
	$ cd php-5.5.17
	$ ./configure --prefix=/opt/php --with-libxml-dir=/usr \
		--with-apxs2=/opt/apache2/bin/apxs \
		--enable-mbstring --enable-mbregex \
		--with-openssl --with-zlib --with-bz2 \
		--with-gd --enable-gd-native-ttf --enable-gd-jis-conv \
		--with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib \
		--without-mysql --without-pgsql --without-sqlite3 --without-pdo-sqlite \
		--disable-fileinfo
		

option説明など
--with-libxml-dir=libxmlを指定する(DIRはコンパイル時のprefix)
--with-apxs2=apache2のモジュールとしてコンパイルする指定
apache1だと違うオプションになる
--enable-mbstring多言語に対応させるオプション
日本語で使うには必須
--with-zlib-dirファイルの圧縮転送を行えるようにする(?)
--with-gd
--enable-gd-native
--enable-gd-jis-conv
gdというグラフィックを弄るソフト関係のオプション
--with-jpeg-dir=jpegファイルを取り扱えるようにする
--with-png-dir=pngファイルを取り扱えるようにする
--with-freetype-dir=TrueTypeフォントをレンダリングするライブラリを扱えるようにする
--disable-fileinfoコンパイル時エラーが出るため

$ make $ make test ┃===================================================================== ┃TEST RESULT SUMMARY ┃--------------------------------------------------------------------- ┃Exts skipped : 50 ┃Exts tested : 29 ┃--------------------------------------------------------------------- ┃ ┃Number of tests : 13006 9380 ┃Tests skipped : 3626 ( 27.9%) -------- ┃Tests warned : 3 ( 0.0%) ( 0.0%) ┃Tests failed : 26 ( 0.2%) ( 0.3%) ┃Expected fail : 35 ( 0.3%) ( 0.4%) ┃Tests passed : 9316 ( 71.6%) ( 99.3%) ┃--------------------------------------------------------------------- ┃Time taken : 5871 seconds ┃===================================================================== まぁ、こんなモノかな・・・? # make install
その他インストールに伴う変更(httpd.confの書き換え)
	$ vi /opt/apache2/conf/httpd.conf
		(追加)
		┃< LoadModule php5_module        modules/libphp5.so
			注:php4_moduleはロードしないように削除(コメント化)すること。
おまじない
	# strip -p /opt/php/bin/*
phpを登録する
	# vi /opt/apache2/conf/httpd.conf
		(追加)
		┃AddType application/x-httpd-php .php
		┃AddType application/x-httpd-php-source .phps
			注:AddType application がある近くに記載する方がいいと思われ
apacheの再起動
	# /etc/init.d/httpd stop
	# /etc/init.d/httpd start
「オプションの変更」
PHP4からPHP5への変更でconfigureのオプションも変更されています。
以前と同等の内容にしたつもりですが・・・どうでしょう?


戻るなら押せ!