Help us understand the problem. What is going on with this article?

LAMP環境をソースインストールする(PHP5.6.40編)

  • PHP (バージョン5.6.40)をソースからインストールします。

    • 前回のURL(ApacheのソースインストールのURL:https://qiita.com/Cch4n/items/38d72278b629e7eaf16a)
      前回に引き続きPHPをソースからインストールします。途中、再インストール等していますので、一発でソースインストールしたい方は一度すべて目を通していただけますと幸いです。
    • PHPの依存関係にあるライブラリのインストール

      参考にしたURL:http://php.net/manual/en/install.unix.apache2.php

      公式のURL:http://php.net

      • libxml2

        XMLを解析・操作するC言語のライブラリです。

        公式のURL:http://www.xmlsoft.org/

        カレントディレクトリは/usr/local/srcです。

        ソースファイルをダウンロードし、展開します。

        $ pwd
        /usr/local/src
        $ sudo wget ftp://xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz
        

        展開します。

        $ sudo tar xzvf libxml2-2.9.2.tar.gz
        $ cd libxml2-2.9.2
        

        コンパイル、インストールします。

        $ cd libxml2-2.9.2
        $ sudo ./configure
        

        configureコマンドの結果、エラーが発生しました。

        libxml.c:3909: error: 'PyObject' undeclared (first use in this function)
        libxml.c:3909: error: 'module' undeclared (first use in this function)
        libxml.c:3915: warning: implicit declaration of function 'Py_InitModule'
        libxml.c:3915: warning: nested extern declaration of 'Py_InitModule'
        libxml.c:3915: error: 'libxmlMethods' undeclared (first use in this function)
        

        Pythonがインストールされていないことが原因で発生しているエラーのようです。

        本課題に限りpythonのサポートが必要なさそうなので、configureコマンド実行時のオプション--with-pythonをnoにして実行します。

        $ sudo ./configure --with-python=no
        $ sudo make
        $ sudo make install
        
    • PHPインストール

      ソースファイルをダウンロードし、展開します。

      カレントディレクトリは、/usr/local/srcです。

      $ pwd
      /usr/local/src
      $ sudo wget http://jp2.php.net/get/php-5.6.40.tar.gz/from/this/mirror
      

      展開します。

      $ sudo tar xzvf mirror
      $ cd php-5.6.40/
      
      

      PHPをインストールします。configureコマンド実行時、--with-apxs2オプションによってApacheのインストールディレクトリを指定します。

      指定が無いとPHPをApacheで使用することができません。

      また、-with-libxml-dirオプションによって依存ライブラリであるlibxmlのインストールディレクトリを指定ます。

      $ sudo ./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-libxml-dir=/opt/libxm12-2.9.2
      

      コンパイル、インストールします。

      $ sudo make
      $ sudo make test
      $ sudo make install
      
    • PHP再インストール

      次の問題であるMySQLインストール完了後、再度PHPをインストールしました。

      上記configureコマンドのオプションだと後にssl通信、wordpress,mysql等でPHPを利用できません。phpizeを用いてモジュールを追加しようとしたのですが、かなりつまってしまいましたので、PHPを再コンパイルし、再インストールします。

      • 中間ファイルとインストールフォルダ消去

        カレントディレクトリは/usr/local/src/php-5.6.40です。

        $ sudo make clean
        $ sudo rm -r /usr/local/php
        
      • 必要であるライブラリ群のインストール

        まずphpモジュール用のディレクトリを作り、そこに関連するソースファイルをダウンロードします。
        カレントディレクトリは/usr/local/srcです。

        $ pwd
        /usr/local/src
        $ sudo mkdir phpmodule
        $ cd phpmodule
        

        phpmoduleディレクトリを作成しました。必要なプログラムをphpmodule下でダウンロードし、インストールします。

        • JPEG
          JPEGのエンコード、デコードを行うためのライブラリです。

          URL:http://www.ijg.org/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          同名のフォルダがないことを確認し、ソースファイルをダウンロード、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
          

          展開します。

          $ sudo tar xvzf jpegsrc.v9c.tar.gz
          $ cd jpeg-9c/
          

          configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ sudo ./configure
          $ sudo make
          $ sudo make install
          
        • FreeType

          フォントエンジンを実装したライブラリです。フォント関連の様々な操作をサポートします。

          URL:https://www.freetype.org/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロードし、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget https://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz
          

          展開します。

          $ sudo tar xvzf freetype-2.9.tar.gz
          $ cd freetype-2.9
          

          configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ sudo ./configure
          $ sudo make
          $ sudo make install
          

          phpから参照できるようにシンボリックリンクを作成します。

          $ sudo ln -s /usr/local/include/freetype2 /usr/local/include/freetype
          
        • libPNG

          画像データ形式のPNGエンコード・デコードを行うライブラリです。

          公式URL:http://www.libpng.org/pub/png/libpng.html

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロード、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget --trust-server-names https://downloads.sourceforge.net/project/libpng/libpng16/1.6.34/libpng-1.6.34.tar.gz?r=http%3A%2F%2Fwww.libpng.org%2Fpub%2Fpng%2Flibpng.html&ts=1511065314&use_mirror=jaist
          
          

          展開します。

          $ sudo tar xvzf libpng-1.6.34.tar.gz
          

          展開されていることを確認します。

          $ cd libpng-1.6.34
          

          Makefileをscriptsディレクトリからリネームしてコピーします。

          $ sudo cp scripts/makefile.linux Makefile
          

          prefixを指定すると必要なライブラリのPathが見つからなくなるようなのでLDFLAGSによってライブラリのPathを指定します。

          $ sudo ./configure --prefix=/usr/local LDFLAGS="-L/usr/local/lib -lz"
          $ sudo make
          $ sudo make install
          
        • zlib

          データの圧縮および伸張を行うためのライブラリです。

          公式URL:https://www.zlib.net/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          同名のフォルダがないことを確認し、ソースファイルをダウンロード、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget http://zlib.net/zlib-1.2.11.tar.gz
          

          展開します。

          $ sudo tar xvzf zlib-1.2.11.tar.gz
          $ cd zlib-1.2.11
          

          configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ sudo ./configure
          $ sudo make
          $ sudo make install
          
        • m4

          autoconfの依存ライブラリです。

          公式URL:https://www.gnu.org/software/m4/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロード、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.gz
          

          展開します。

          $ sudo tar xvzf m4-1.4.18.tar.gz
          $ cd m4-1.4.18
          

          カレントディレクトリを展開フォルダに移し、configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ cd m4-1.4.18/
          $ sudo ./configure
          $ sudo make
          $ sudo make install
          
        • autoconf

          configureスクリプトの自動生成ツールです。

          公式URL:https://www.gnu.org/software/automake/

          カレントディレクトリは、/usr/local/src/phpmoduleです。
          同名のフォルダがないことを確認後、ソースファイルをダウンロードし、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
          $ find autoconf-2.69.tar.gz 
          autoconf-2.69.tar.gz
          

          展開します。

          $ sudo tar xvzf autoconf-2.69.tar.gz
          $ cd autoconf-2.69

          カレントディレクトリを展開フォルダに移し、configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ cd autoconf-2.69/
          $ sudo ./configure
          $ sudo make
          $ sudo make install
          
        • libiconv

          異なる文字コード間の相互変換を行う標準APIです。

          公式URL:https://www.gnu.org/software/libiconv/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロードし、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
          

          展開します。

          $ sudo tar xvzf libiconv-1.15.tar.gz
          $ cd libiconv-1.15
          

          カレントディレクトリを展開フォルダに移し、configureコマンドの後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ cd libiconv-1.15/
          $ sudo ./configure
          $ sudo make
          $ sudo make install
          
        • libGD

          GDはイメージを動的に操作するライブラリです。

          公式URL:https://libgd.github.io/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロード、展開します。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget https://github.com/libgd/libgd/releases/download/gd-2.2.5/libgd-2.2.5.tar.gz
          

          展開します。

          $ sudo tar xvzf libgd-2.2.5.tar.gz
          

          展開されていることを確認します。

          $ cd libgd-2.2.5
          

          カレントディレクトリを展開フォルダに移し、Makefileをscriptsディレクトリからリネームしてコピーします。

          $ cd libgd-2.2.5/
          $ sudo cp scripts/makefile.linux Makefile
          

          configureコマンド実行時のオプション--withで、png、freetype、jpeg、xpm、libconvのインストールされているフォルダを指定します。
          その後、makeコマンドよりコンパイル、make installコマンドよりインストールします。

          $ sudo ./configure 
                  --with-png=/usr/local 
                --with-freetype=/usr/local 
                  --with-jpeg=/usr/local 
                  --with-xpm=/usr 
                  --with-libiconv-prefix=/usr/local
          $ sudo make
          $ sudo make install
          
        • cURL

          さまざまなプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

          公式URL:https://curl.haxx.se/

          カレントディレクトリは、/usr/local/src/phpmoduleです。

          ソースファイルをダウンロード、展開し、カレントディレクトリを展開先フォルダへ移動させます。

          $ pwd
          /usr/local/src/phpmodule
          $ sudo wget https://curl.haxx.se/download/curl-7.58.0.tar.gz
          

          展開します。

          $ sudo tar xvzf curl-7.58.0.tar.gz
          

          LDFLAGSによってライブラリのPathを、CPPFLAGSによってプリプロセッサのPathを指定します。

          $ CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib"
          

          configureコマンド時のオプション --enable-http --enable-cookies によりhttpとcookieがサポートされるようにします。またzlib、ssl、libssh2、のインストールされているディレクトリを指定します。

          $ sudo ./configure 
                  --enable-http 
                  --enable-cookies 
                  --with-zlib=/usr/local 
                  --with-ssl=/usr/local/ssl 
                  --with-libssh2=/usr/local
          

          makeコマンドよりコンパイル、make installコマンドよりインストールします

          $ sudo make
          $ sudo make install
          

      PHPのインストールにもどります。

      カレントディレクトリは、/usr/local/src/php-5.6.40です。

      configureコマンド実行時、オプション--with-apx2でApacheのインストールディレクトリ下のapxsディレクトリを指定し、PHPをApacheで使用できるように
      します。

      日本語フォントを扱うためにオプション--enable-gd-jis-convをつけます。

      gd,freetype,jpeg,zlib,libxml,xpm,curl,opensslのインストールディレクトリを指定します。

      PHPでmysqlを使用できるように、オプション--with-mysql-sockよりソケットファイルのPathを指定します。
      また、後の課題にてmysqli関数やpdo関数使用するため、オプション--with-pdo-mysql --with-mysqliオプションでmysqlのインストールディレクトリを指
      定します。

      $ sudo ./configure  
      --with-apxs2=/usr/local/httpd/bin/apxs
      --with-gd=/usr/local
      --with-freetype-dir=/usr/local/src/phpmodule/freetype-2.7
      --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local
      --with-zlib-dir=/usr
      --with-libxml-dir=/usr/local
      --enable-gd-jis-conv
      --with-curl=/usr/local
      --with-openssl=/usr/local/ssl
      --with-xpm-dir=/usr
      --with-mysqli=/usr/local/mysql/bin/mysql_config
      --with-pdo-mysql=/usr/local/mysql
      --with-mysql-sock=/tmp/mysql.sock
      --with-iconv-dir=/usr/local
      

      makeコマンドよりコンパイル、make installコマンドよりインストールします。

      $ sudo make
      $ sudo make install
      

      PHPのモジュールを読み込めるよう設定がなされているかApacheの設定ファイルから確認します。

      $ pwd
      /usr/local/httpd/conf
      $ vim httpd.conf
      #一部抜粋、下記の表記があることを確認する。
      LoadModule php5_module        modules/libphp5.so
      
Cch4n
東洋大学情報連携学部 3年 インフラ・セキュリティ・開発全般に興味あり 忘備録・勉強用
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした