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

CentOS6にPHP7をソースからインストール

More than 3 years have passed since last update.

環境構築につかうもの

CentOS 6.7にPHPをソースからインストールします。
環境構築には以下を使いました。

もちろんVagrantは使わなくてもかまいません。
Vagrantの操作方法は割愛しています。

Apacheをインストール

まずはApacheをインストールします。
Apacheはyumで入れます。

$ su -
# yum install -y httpd

設定ファイルを編集します。

vi /etc/httpd/conf/httpd.conf

↓以下を追記
ServerName localhost:80

立ち上がる事を確認します。

# service httpd start

http://192.168.33.10 にアクセスして、ページが表示されたら成功です。
IPは適宜読み替えてください。

OS起動時に自動起動するようにしておきます。

# chkconfig --add httpd

必要なパッケージをインストール

PHPをインストールする前に、必要なパッケージをインストールします。

# yum install -y httpd-devel libxml2-devel bzip2-devel curl-devel libjpeg-devel libpng-devel libXpm-devel freetype freetype-devel aspell-devel recode-devel openssl-devel gmp-devel readline-devel

http://qiita.com/soundws/items/cc84da42419f1ab3443b を参考にして、
yumのリポジトリを追加します。

# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm --import RPM-GPG-KEY-EPEL-6 
# rm -f RPM-GPG-KEY-EPEL-6 
# vi /etc/yum.repos.d/epel.repo
# 以下の内容で新規作成
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

パッケージをインストールします。

# yum --enablerepo=epel install -y libmcrypt php-mcrypt libmcrypt-devel php-mcrypt-devel

PHPをダウンロード

# cd /usr/local/src
# wget -O php-7.0.6.bz2 http://jp2.php.net/get/php7.0.6.tar.bz2/from/this/mirror
# tar jvxf php-7.0.6.bz2

PHPをインストール

コンパイルします。

# cd php-7.0.6
# ./configure \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-pspell \
    --with-gd \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --with-zlib-dir=/usr \
    --with-xpm-dir=/usr \
    --with-freetype-dir=/usr \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-recode=/usr \
    --with-mysqli=mysqlnd \
    --enable-mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-readline \
    --with-apxs2=/usr/sbin/apxs

成功したらインストールをします。

# make && make install

以下のように表示されれば成功です。

You may want to add: /usr/local/lib/php to your php.ini include_path
/usr/local/src/php-7.0.6/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f phar.phar /usr/local/bin/phar
Installing PDO headers:           /usr/local/include/php/ext/pdo/

PHPの設定

php.iniを設置します。
/etcに置かれているので所定の位置にコピーします。

# cp /etc/php.ini /usr/local/lib
# vi /usr/local/lib/php.ini

以下を記述して保存します。
include_path = "/usr/local/lib/php"

Apacheの設定

ApacheでPHPを扱えるようにします。

# vi /etc/httpd/conf/httpd.conf

以下を追加
<IfModule mod_php7.c>
  AddType application/x-httpd-php .php
</IfModule>

以下を編集(index.phpを追加)
DirectoryIndex index.html index.html.var index.php

Apacheを再起動します。

# service httpd restart
# vi /var/www/html/info.php

以下を記述
<?php

phpinfo();

http://192.168.33.10/info.php を実行してみます。
phpinfoが表示されたら成功です。

PDOのテスト

PDOが使えるか確認します。devというDBと
usersというテーブルにデータがある前提で進めます。

# vi /var/www/html/pdotest.php

以下を記述
<?php

$dsn = 'mysql:dbname=dev; host=localhost; charset=utf8';
$name = 'ユーザー名';
$password = 'パスワード';

try{
    $db = new PDO($dsn, $name, $password);
    $stt = $db->prepare("select * from users");
    $stt->execute();
    while ($row = $stt->fetch(PDO::FETCH_ASSOC)) {
        var_dump($row);
    }
    echo "正常終了";
} catch(PDOException $e){
    echo $e->getMessage();
}

Permission Denied というエラーが出る際はSELinuxが有効である可能性があります。

# getenforce
Enforcing

# vi /etc/sysconfig/selinux
以下を記述して保存して、再起動
SELINUX=disabled

なお、MySQL(MariaDB)のインストールは http://qiita.com/d-dai/items/9b20c47402a8fc5f1a6a 
に記載しています。

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
ユーザーは見つかりませんでした