PHPとは、Hypertext Preprocessorであり、HTMLとの相性と歴史の長さでは他のスクリプト系言語より長いので、多くの有志によって安定したライブラリを持つのが特徴的である。詳しくは、PHP Wikipediaを参照するように。
curlライブリを予めインストールしておく。
「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
# 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/ ここから。
# 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 の場所
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
# emacs /usr/local/apache2/htdocs/test.php <?php phpinfo()?> <- この行だけ作成
ここの公式マニュアルサイトを見るのが、一番正確だが、正式にはPHP Extension and Application Repository の略であり、PHP4から付属で付いてくる、非常に便利なクラスライブラリ集である。
PHPを主にhttpサーバーから利用できるようにする常駐プログラム。phpのコンパイル時に、利用できるように指定することでphpと一緒にインストールされる。
# 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
/var/lib/php/session/のフォルダにアクセスできない。chmod 777 /var/lib/php/session/ を実行。
また、nginx を利用して、php-fpm を利用している場合は、
# vi /etc/php-fpm.d/www.conf
のユーザーとグループを、nginx にしておくのも忘れないように。 ※当然上記のセッションフォルダーの chown も忘れないこと。
こんなエラーが出た、場合は、configure で出力された、config.logを見ると良いが、対外は、--with-openssl=/usr/local/ssl の指定(opensslのパスは各環境に合わせる)が漏れている場合が多い。