PHP5.3.3のインストール

PHP5.3.3のインストール方法(ソース)~その1~

●インストール環境

OS fedora13
PHP php-5.3.3.tar.gz
インストール先フォルダ /usr/local/httpd-5.3.3
/usr/local/phpにシンボリックリンクを貼る
Webサーバー Apache http Server 2.2.16
データベース MySQL 5.1.50
php.iniのパス /usr/local/php-5.3.3/lib/php.ini
拡張モジュール mbstring、GD、iconv、mysql、mysqli、

●インストール

1.※事前に下記がインストールされているか調べる。無ければインストールする

PHPのインストールと実行にはflex、libxml2が必要
※5.2、5.3ではflexはインストールされてなくても大丈夫でした・・・
GD
ライブラリを有効にするためにはzlib、libpng、libjpegが必要

# rpm -qa flex
# rpm
-qa libxml2-devel
# rpm -qa libjpng-devel
# rpm -qa libjpeg-devel
# rpm
-qa zlib-devel
# yum install
flex
# yum install libxml2-devel
# yum install libjpeg-devel
#
yum install libpng-devel
# yum install
zlib-devel

2.PHPが既にインストールされていないか調べる

インストールされていたらアンインストールする
(※依存するパッケージも削除されてしまうので注意してください)

# rpm -qa php
# yum remove php

3.root権限に移る

$ su –

4./usr/local/srcにソースファイルをダウンロー ド

# wget -P /usr/local/src
http://jp.php.net/distributions/php-5.3.3.tar.gz

5./usr/localにインストールする為フォルダを作成

# mkdir /usr/local/php-5.3.3

6.ソースファイルが置いてある場所へ移動

# cd /usr/local/src

7.ソースファイルを展開

# tar xvfz php-5.3.3.tar.gz

8.展開されたフォルダへ移動

# cd php-5.3.3

9.設定
実際は事前に追加・削除するモジュール検証してからインストールした方が良いかと・・・

# ./configure –prefix=/usr/local/php-5.3.3
–with-apxs2=/usr/local/httpd-2.2.16/bin/apxs –enable-mbstring –with-gd
–with-mysql=/usr/local/mysql-5.1.50 –with-mysqli –with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd –with-jpeg-dir
–with-iconv
–prefix=/usr/local/php-5.3.3インストール先を指定する–with-apxs2=/usr/local/httpd-2.2.16/bin/apxs共有モジュールをビルドする。Apacheのapxsのパスを指定。デフォルトはapxsApache1.3の場合は–with-apxs=PATHで指定

–enable-mbstringmbstring関数を有効にする。mbstring関数を利用するために必要

–with-gdイメージファイルを作成、操作する。形式には,GIF,PNG,JPEG,WBMP,XPM

–with-mysql=/usr/local/mysql-5.1.50MySQLとの連携を有効にする

–with-mysqli=PATHmysqli拡張サポートによってMySQL4.1以上で提供される機能を利用することができる

5.2以前→mysql_configのパスを指定する
–with-mysqli=/usr/local/mysql-5.1.50/bin/mysql_config

5.3→mysqlndを指定
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd

PHP5.3からmysqliはMySQLのネイティブドライバを使用するのがデフォルトになって、オプション指定が変わった

–with-iconv文字セットの変換を行う
サポートされる文字集合は、使用するシステムのiconvの実装に依存する

10.コンパイル

※コンパイルに失敗してやり直す場合は make
clean を実行しconfigureからやり直す

# make

11.インストール

# make install

12./usr/local/php
としてアクセスできるようにシンボリックリンクを作成

# ln -sfn /usr/local/php-5.3.3
/usr/local/php

※/usr/local/httpd-2.2.16/modules/libphp5.soがインストールされ、

httpd.confに「LoadModule php5_module
modules/libphp5.so」が追記されている

●httpd.confとphp.iniの設定

5.3から雛形が変わってます
php.ini-development:開発環境で推奨される設定がある
php.ini-production
は本番環境向けに設定されている

13.ソースフォルダ内のphpの設定ファイルの雛形を/usr/local/php-5.3.3/lib/php.iniへコピー&リネーム(デフォルト値は
–prefixオプションのパス/lib)

# cp /usr/local/src/php-5.3.3/php.ini-development
/usr/local/php-5.3.3/lib/php.ini

14.apacheのhttpd.confを編集する
※表示の都合で<>が全角になっています。コピペする場合は半角にして下さい

phpモジュールをロードする。下記があるか確認。無ければ追記

LoadModule php5_module
modules/libphp5.so

——————————————————————————————————–
php.iniのディレクトリのパス。下記を追記
※このディレクティブはphp.iniを–prefixオプションのパス/libに置いた場合や–with-config-file-pathオプションをつけてインストールした場合は書かなくても大丈夫

PHPIniDir
“/usr/local/php-5.3.3/lib”

——————————————————————————————————–
デフォルトページにindex.phpを使用する。(書いた順に優先される)
下記を変更

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

——————————————————————————————————–
.phpファイルを使えるようにする。下記を追記

AddType application/x-httpd-php
.php

下記も同じ意味合い。どれか書いておけば大丈夫

AddHandler application/x-httpd-php
php
AddHandler php5-script
php

——————————————————————————————————–
.phpsを色付きでソース表示させる場合
これを書かないで.phpsにアクセスするとソース表示はされるが色は付かない
(実運用では.phpsをソース表示させないようにした方が良いかも)

AddType application/x-httpd-php-source
.phps

——————————————————————————————————–
phpのファイルを.phpとして扱う
Apache
が特定の拡張子のファイルを PHP としてパースするよう設定
悪意を持ってアップロード (あるいは作成) された exploit.php.jpg
のようなファイルが PHPとして実行されてしまうのを防ぐ
下記を追記(.php)

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

——————————————————————————————————–
.phpsのファイルを色付きでソース表させる場合
(実運用では.phpsをソース表示させないようにした方が良いかも)

<FilesMatch “\.phps$”>
SetHandler
application/x-httpd-php-source
</FilesMatch>

——————————————————————————————————–
.phpと.phpsのファイルをphpとして扱う場合(.phpsをソース表示させない)
下記を追記(.phps)

<FilesMatch “\.php$|\.phps$”>
SetHandler application/x-httpd-php
</FilesMatch>

14.php.iniを編集する(主に変更する箇所を抜粋。必要な部分を変更する)

公開フォルダのパスを指定

doc_root
=

doc_root =
/usr/local/httpd-2.2.16/htdocs

——————————————————————————————————–
HTTPヘッダーのPHPに関する情報を隠蔽する

expose_php = On

expose_php =
Off

——————————————————————————————————–
エラーレベルを設定する
下記エラーレベルの一部
ビット演算子を使用して値を組み合わせたり特定のエラータイプをマスクすることができる

E_ERROR:重大な実行時エラー

E_WARNING:実行時の警告
(致命的なエラーではない)。スクリプトの実行は中断されない

E_NOTICE:実行時の警告。エラーを発しうる状況に遭遇したことを示す。変数が初期化されていない時などに出るエラー

E_PARSE:コンパイル時のパースエラー。パースエラーはパーサでのみ生成される

E_STRICT:コードの相互運用性や互換性を維持するためにPHPがコードの変更を提案する(PHP
5
より)

E_DEPRECATED:実行時の注意。これを有効にすると、将来のバージョンで動作しなくなるコードについての警告を受け取ることができる(PHP
5.3.0 より)

E_ALL:サポートされる全てのエラーと警告。 E_STRICT
レベルのエラーは除く

※5.3ではE_DEPRECATEDのエラーが追加されているのでスクリプトによってはDEPRECATEDエラーが多発します

設定例)
E_DEPRECATEDを除く全てとE_STRICT
(E_ALL
| E_STRICT) & ~E_DEPRECATED

E_DEPRECATEDとE_STRICTを除く全て
E_ALL
& ~(E_STRICT | E_DEPRECATED)

全てとE_STRICTのエラー
E_ALL |
E_STRICT (E_ALL & E_STRICT)

E_NOTICE、E_STRICT以外の全てのエラー
E_ALL ^
E_NOTICE (E_ALL & ~E_NOTICE)

E_ERRORとE_WARNINGとE_PARSE
E_ERROR |
E_WARNING | E_PARSE (E_ERROR & E_WARNING &
E_PARSE)

error_reporting =
E_ALL |
E_STRICT

——————————————————————————————————–
エラーをブラウザに表示しない(実運用ではoffにする)

display_errors =
On

——————————————————————————————————–
エラーログを出力する

log_errors =
On

——————————————————————————————————–
エラーログを出力するパス(ここではphpフォルダ内にlogフォルダを作成)

;error_log = php_errors.log

error_log =
/usr/local/php-5.3.3/log/php_errors.log

——————————————————————————————————–
デフォルトの文字コード

;default_charset = “iso-8859-1”

default_charset =
“UTF-8”

——————————————————————————————————–
[mbstring]
mbstringで使用される言語設定

;mbstring.language = Japanese

mbstring.language =
Japanese

——————————————————————————————————–
内部エンコーディング

;mbstring.internal_encoding = EUC-JP

mbstring.internal_encoding =
UTF-8

——————————————————————————————————–
HTTP入力文字エンコーディング

;mbstring.http_input = auto

mbstring.http_input =
auto

——————————————————————————————————–
HTTP出力文字エンコーディング

;mbstring.http_output = SJIS

mbstring.http_output =
UTF-8

——————————————————————————————————–
HTTP入力変換

;mbstring.encoding_translation = Off

mbstring.encoding_translation =
On

——————————————————————————————————–
[Date]
PHP5.3.0以降で環境変数TZを参照しなくなった為設定
(データ系関数を使うとエラーが発生するので)

;date.timezone =

date.timezone =
“Asia/Tokyo”

——————————————————————————————————–
[Session]
セッションファイルのパス(ここではphpフォルダ内にsessionフォルダを作成)

;session.save_path = “/tmp”

session.save_path =
“/usr/local/php-5.3.3/session”

——————————————————————————————————–
クライアント側にセッションIDを保存する際にクッキーを使用するかどうかを指定
0が無効、1が有効

;session.use_cookies = 1

session.use_cookies =
0

——————————————————————————————————–
クライアント側へのセッションIDの保存にCookieのみを使用する
この設定を有効にすることにより、セッションIDをURLに埋め込む攻撃を防ぐ

session.use_only_cookies =
1

——————————————————————————————————–
[MySQL]
mysqlのソケットのパスを指定
(my.cnfのsoketのパスと同じにする)

mysql.default_socket =

mysql.default_socket =
/usr/local/mysql-5.1.50/tmp/mysql.sock

——————————————————————————————————–
[MySQLi]
mysqlのソケットのパスを指定
(my.cnfのsoketのパスと同じにする)

mysqli.default_socket =

mysqli.default_socket =
/usr/local/mysql-5.1.50/tmp/mysql.sock

——————————————————————————————————–
[Pdo_mysql]
mysqlのソケットのパスを指定

pdo_mysql.default_socket=

pdo_mysql.default_socket=
/usr/local/mysql-5.1.50/tmp/mysql.sock

15.Apacheの再起動

# /usr/local/httpd/bin/apachectl restart

起動スクリプトを使用している場合

# /etc/init.d/httpd stop

16.phpの動作確認

下記のPHPスクリプトを作る
Apache公開フォルダにinfo.phpで保存する

※表示の都合上タグ<>は大文字になってます。コピペしないでください

<?php phpinfo(); ?>

ブラウザから『http://localhost/info.php』でアクセスする
下記のように表示されればOK

 

Posted in Linux