PHPのインストール〜Debian,RedHat?系〜

経緯

  • Apache同様、毎回調べてる気がするのでここに残す。

準備

  • 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 php5-dev
# yum install php-mbstring

コマンドライン版のphpも使いたいなら

# apt-get install php5-cli

yumだと必要だったかなぁ・・・?

Apacheの停止、php.iniのバックアップ

年のため

/etc/init.d/apache stop
cp /usr/local/php/lib/php.ini ~

ソースの入手

  •  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

コンパイル

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

設定

  • テンプレのコピー(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

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-28 (日) 21:47:41 (2493d)