#norelated
* PHPのインストール〜Debian,RedHat系〜 [#h8e5b435]

** 経緯 [#s3e77a86]
- Apache同様、毎回調べてる気がするのでここに残す。

** 準備 [#s3e33a1e]
- lexや画像を扱うライブラリ、XMLライブラリのインストール
-- Debian
 apt-get install libxml2 libxml2-dev
 apt-get install flex

-- RedHat系
 yum -y install flex libxml2-devel
 yum -y install zlib-devel libpng-devel
 yum -y install libjpeg-devel

PHP自体もパッケージで入れるなら以下で終わり(yum,aptごちゃまぜ)
 # yum install php5

 #apt-get install php5 libapache2-mod-php5

develも入れておいた方が、拡張とかリビルドする時にいいかも
 # yum install php-devel

拡張も
 # apt-get install php5-pgsql php-pear
 # apt-get install php5-pgsql php-pear php5-dev
 # yum install php-mbstring

コマンドライン版のphpも使いたいなら
 # apt-get install php5-cli
yumだと必要だったかなぁ・・・?

** Apacheの停止、php.iniのバックアップ [#e0b11651]
年のため
 /etc/init.d/apache stop
 cp /usr/local/php/lib/php.ini ~

** ソースの入手 [#e7884c86]
- apache同様に、シンボリックリンクにすることでバージョンアップを容易にする。
 cd /usr/local/src/
 wget http://jp.php.net/get/php-5.2.5.tar.bz2/from/this/mirror
 tar -xjvf php-5.2.5.tar.bz2  
 ln -sfn /usr/local/php-5.2.5 /usr/local/php

** コンパイル [#le92c986]
 cd php-5.2.5
 
 ./configure \
 --prefix=/usr/local/php \
 --enable-mbstring \
 --with-apxs2=/usr/local/httpd/bin/apxs \
 --with-config-file-path=/usr/local/php/lib/ \
 --enable-mbstr-enc-trans \
 --enable-zend-multibyte \
 --enable-mbregex \
 --with-mime-magic \
 --enable-exif \
 --with-gd \
 --with-zlib \
 --with-jpeg-dir \
 --with-pgsql=/usr/local/pgsql/ 

--prefix:インストール先指定
--enable-mbstring:マルチバイト文字を扱うため
--with-apxs2:apacheモジュールとしてインストールするため
--with-config-file-path:php.iniの場所を指定
--enable-mbstr-enc-trans:文字コード変換を有効
--enable-zend-multibyte:ShiftJISを扱うため
--enable-mbregex:マルチバイトの正規表現を扱うため
--with-mime-magic:MIMEタイプ関数を使うため
--enable-exif:画像情報を得るEXIF関数を使うため
--with-gd:GD関数を使うため
--with-zlib:zip関数を使うため
--with-jpeg-dir:JPEG画像を扱うため(GDとセット)
--with-pgsql=/usr/local/pgsql/:PostgreSQLと連携するため 

- 以下は、まぁ指定しないであろうオプション
--enable-versioning:複数のバージョンのPHPを使うとき
--enable-shmop:共有メモリ関数を扱うため
--enable-sockets:ソケット関数を扱うため
--enable-pcntl:プロセス制御関数を扱うため
--enable-sysvmsg:SystemV系のメッセージ関数を扱うため
--enable-sysvsem:SystemV系のセマフォ関数を扱うため
--enable-sysvshm:SystemV系の共有メモリ関数を扱うため

- ライブラリの場所を指定する場合
--with-jpeg-dir=/usr/lib/ 
--with-png-dir=/usr/lib/
--with-zlib-dir=/usr/local/lib
--with-Xpm-dir=/usr/X11R6/lib/
--with-tiff-dir=/usr/lib

- 場所指定した場合エラーでconfigureでエラる場合があるが、シンボリックリンクをはると直る(ことがある)
 ln -s /usr/lib/libjpeg.so.62.0.0 /usr/lib/libjpeg.so 
 ln -s /usr/lib/libpng.so.3.10.0  /usr/lib/libpng.so
 ln -s /usr/lib/libtiff.so.3.7.1 /usr/lib/libtiff.so

あとは、
 make 
 make install

** 設定 [#fad70947]
- テンプレのコピー(configureオプションwith-config-file-pathで指定したディレクトリへ)
 cp php.ini-dist /usr/local/php/lib/php.ini
- インストールでhttpd.confには
 LoadModule php5_module        modules/libphp5.so
は、既に追記されてるはず。
これに加えてPHPの設定をするためにhttpd.confに
 <IfModule php5_module>
  include conf/extra/php.conf
 </IfModule>
を追記。
したら、/usr/local/httpd/conf/extra/php.confというファイルを作って
 AddHandler php5-script .php
 AddType text/html .php
 DirectoryIndex index.php
とか書く。

- PHPの設定変更
-- 基本的に参考ページのまま。でも一回は全設定を通して確認する。
 vi /usr/local/php/lib/php.ini
 
 allow_call_time_pass_reference = Off
 # セッションを利用できるか要確認
 open_basedir = /var/www
 error_reporting = E_ALL
 expose_php = Off
 log_errors = On
 log_errors_max_len = 4096
 # これは迷いどころ。開発環境ではOnでよかろう
 display_errors = Off
 display_startup_errors = On
 # 本当にエラーが吐かれるか確認
 error_log = /usr/local/php/logs/php_error.log
 include_path = ".:/usr/local/php/lib/php"
 variables_order = "GPCS"
 register_long_arrays = Off
 # スクリプト側で対処すべし
 magic_quotes_gpc = Off
 # 脆弱性というか文字化け対策のためにも重要
 default_charset = "UTF-8"
 session.use_only_cookies = 1
 session.hash_function = 1 
 
 mbstring.language = Japanese
 mbstring.internal_encoding = UTF-8
 mbstring.http_input = auto
 mbstring.http_output = UTF-8
 mbstring.encoding_translation = Off
 mbstring.detect_order = auto
 mbstring.substitute_character = none;

- PHPエラーログ吐き出し先をhttpdが書き込めるように
 chown httpd:httpd -R /usr/local/php/logs/

- Apacheを(設定チェックしてから)再起動
 /usr/local/httpd/bin/apachectl configtest
 /usr/local/httpd/bin/apachectl graceful

- お決まり。phpinfoで確認。設定が本当に反映されているか確認。よくパス違いなどでphp.iniが読み込まれてなかったりする。たとえ少しの時間でもphpinfoを見られたくないために、気休め程度にIP制限しておく。

 <?php
  if(strstr($_SERVER['REMOTE_ADDR'],'123.456.789.012')){
                phpinfo();
  }
 ?>


- PEARインストール
-- 入ってなかったら
 wget  http://go-pear.org
または
 wget http://pear.php.net/go-pear

で取得してphpで実行
 /usr/local/php/bin/php hogehoge(wgetで取得したファイル名)

-- パッケージなら
 apt-get install php-pear

-- 俺的基本セット
 cd /usr/local/php/bin
 ./pear upgrade-all

各パッケージは
 /usr/local/php/bin/pear install hogehoge
でインストール

 pearのパスは/usr/local/php/bin/pear
 ./pear install DB
 ./pear install Mail
 ./pear install Mail_MIME
 ./pear install HTML_QuickForm
 ./pear install Auth
近頃はMDB2がDBに取って代わりそうな勢い
 ./pear install MDB2
 ./pear install MDB2#pgsql



** 参考 [#zadc9b79]
- コンパイルオプション http://php.plus-server.net/configure.html
- もっと完全なコンパイルオプションhttp://jamesthornton.com/php/japanese/install.configure.html
- php.iniの設定
http://wiki.ohgaki.net/index.php?PHP%2Ftips%2F%BF%E4%BE%A9php.ini%C0%DF%C4%EA
- php.iniの設定2
http://php.goinkyo.be/?clt=general&doc=phpini
- PHPインストールとかいろいろ
http://tsuttayo.sytes.net/php/
- セキュリティを意識したPHPの設定と記述
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS