Edit
PHPとは?

PHPとは、Hypertext Preprocessorであり、HTMLとの相性と歴史の長さでは他のスクリプト系言語より長いので、多くの有志によって安定したライブラリを持つのが特徴的である。詳しくは、PHP Wikipediaを参照するように。

Edit
PHPをインストールします。

Edit
必要ライブラリのインストール

curlライブリを予めインストールしておく。

Edit
GDライブラリの使用

「libpng」のインストール

# wget <最新のダウンロード>
# tar zxvf <最新のダウンロード>
# cd <最新のダウンロード>
# ./configure
# make
# make install

「libjpeg」のインストール

# wget http://www.ijg.org/files/jpegsrc.v9a.tar.gz
# tar zxvf jpegsrc.v9a.tar.gz
# cd jpeg-9a
# ./configure
# make
# make install

「libwebp」のインストール

# wget http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz
# tar zxvf libwebp-0.4.3.tar.gz
# cd libwebp-0.4.3
# ./configure
# make 
# make install

Edit
PHP本体のインストール

# wget http://jp.php.net/distributions/php-5.6.7.tar.gz
# tar zxvf php-5.6.7.tar.gz
# cd php-5.6.7
# yum install libxml2-devel
# ./configure \
  --prefix=/usr/local/php \
  --enable-mbstring \
  --enable-mbregex \
  --with-zlib \
  --with-bz2 \
  --enable-zip \
  --with-gd \
  --with-mcrypt \
  --with-curl \
  --with-openssl=/usr/local/ssl \
  --enable-fpm \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-mysqli \
  --with-mysql=/usr/local/mysql \
  --with-pdo-mysql=shared,/usr/local/mysql \
  --with-jpeg-dir \
  --with-png-dir \
# make clean
# make
# make install

※特に「undefined symbol: _efree」とかエラーが出たときは、make cleanしてみて下さい
※xml2のエラーが出たら、以下を実行してください。

# yum install libxml2 libxml2-devel libxml2-python

※--with-config-file-path=/etc と指定することで、php.ini の設置場所を選択できます。
もし、Centos6の場合にはyumにlibxml2が存在しないので、以下でインストール。

# wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-2.5.8-9.puias6.x86_64.rpm
# rpm -ivh libmcrypt-2.5.8-9.puias6.x86_64.rpm
# wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm
# rpm -ivh libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm

または、http://dl.fedoraproject.org/pub/epel/6/i386/ ここから。

Edit
Apacheの設定ファイルの作成

# emacs /usr/local/apache2/conf/extra/php5.conf
  #
  # PHP Module setteing
  #
  LoadModule php5_module        modules/libphp5.so
  AddType application/x-httpd-php .php5 .php4 .php3 .phtml .php
  AddType application/x-httpd-php-source .phps
  PHPIniDir /usr/local/php                                 <- php.ini の場所

Edit
PHPの設定

PHPIniDirなどで設定したフォルダにはphp.iniという設定ファイルがある、ここでphp.iniの設定を行うが、特に重要なものにはextensionフォルダの設定がある。extention行は必要に応じて(標準は/usr/lib/php/modulesとなるが、ここでは私の環境としている)

# emacs php.ini
  extension_dir = "/usr/local/lib/php/modules"
  extension = pdo.so
  extension = pdo_mysql.so

※ちなみにphpをコマンドラインから利用する場合には、php -c /usr/local/php などとphp.iniファイルのフォルダを指定することができる。
※上記の本体のコンパイル時にインストールできない場合などには、extensionのコンパイルとインストールは以下の通りでも可能。

# pecl install pdo_mysql

Edit
WEBサーバーを利用して設定状況を確認

# emacs /usr/local/apache2/htdocs/test.php
  <?php phpinfo()?>                              <- この行だけ作成

Edit
PHPのマニュアル

PHP.netの正式マニュアルはここ

Edit
Pearとは?

ここの公式マニュアルサイトを見るのが、一番正確だが、正式にはPHP Extension and Application Repository の略であり、PHP4から付属で付いてくる、非常に便利なクラスライブラリ集である。

Edit
PHP開発用のエディッター

PHP EDITOR

Edit
PHPの文法上の注意点

Edit
マルチバイト関数の説明

Edit
プログラミングにおける注意点

  1. 数字の上限、PHPでは4バイト符号付整数が数字の上限のため、ファイルサイズなどで、2GBを超えるファイルサイズなどの数字を扱えません。回避策としては、sprintf("%u",filesize("file.txt")) など、符号なし数字として処理することで、4GBまでの数字が取れるとされていますが、PHPのバージョンによっても左右され、保障はされていません。

Edit
セッション問題

Edit
php-fpm

PHPを主にhttpサーバーから利用できるようにする常駐プログラム。phpのコンパイル時に、利用できるように指定することでphpと一緒にインストールされる。

Edit
特徴

Edit
起動ファイルの記述(Systemd)

# vi /etc/systemd/system/php-fpm.service
  [Unit]
  Description=PHP-FPM - PHP FastCGI Process Manager
  After=syslog.target network.target
  
  [Service]
  Type=forking
  User=apache
  Group=apache
  ExecStart=/usr/local/php/sbin/php-fpm -c /usr/local/php/etc -D -y /usr/local/php/etc/php-fpm.conf -g /usr/local/php/var/run/php-fpm.pid
  ExecReload=/bin/kill -USR2 $MAINPID
  TimeoutSec=300
  PrivateTmp=true
  PIDFile=/usr/local/php/var/run/php-fpm.pid
  
  [Install]
  WantedBy=multi-user.target

Edit
トラブルシューティング

Edit
PHP Fatal error: Call to undefined function core.lib.php

/var/lib/php/session/のフォルダにアクセスできない。chmod 777 /var/lib/php/session/ を実行。

また、nginx を利用して、php-fpm を利用している場合は、

# vi /etc/php-fpm.d/www.conf

のユーザーとグループを、nginx にしておくのも忘れないように。 ※当然上記のセッションフォルダーの chown も忘れないこと。

Edit
error: ZLIB extension requires gzgets in zlib

こんなエラーが出た、場合は、configure で出力された、config.logを見ると良いが、対外は、--with-openssl=/usr/local/ssl の指定(opensslのパスは各環境に合わせる)が漏れている場合が多い。

Edit
参考リンク