在玩php之前要先進行伺服器和資料庫的搭建,這裡選擇nginx和PostgreSQL,方法如下連結:
nginx1.0.12源碼編譯
http://blog.csdn.net/qzier_go/article/details/7251991
PostgreSQL 9.1.2源碼編譯
http://blog.csdn.net/qzier_go/article/details/7251957
PHP的源碼編譯
依賴問題先見文後 PS , 我們繼續 ...
PHP官方下載頁面
http://www.php.net/downloads.php
#cd /usr/local/src/php/
#wget http://www.php.net/get/php-5.3.10.tar.gz/from/us.php.net/mirror
解壓php原始碼:
#tar -zxvf php-5.3.10.tar.gz
編譯配置(fastcgi):
#cd php-5.3.10
#./configure \
--prefix=/opt/php \
--with-config-file-path=/opt/php/etc \
--with-iconv-dir=/opt/php/3rdlibs/libiconv-1.14 \
--enable-fpm
#make && make install
make test 的話會提交一個環境相容報告,隨意吧
啟動:
# cd /opt/php/etc
#cp php-fpm.conf.default php-fpm.conf && cd ..
#sbin/php-fpm
為php 設定nginx配置:
server { listen 80; server_name www.example.com; index index.html index.htm index.php; location / { root /srv/www; } #....... custum location ~ \.php$ { root /srv/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
#/opt/nginx/sbin/nginx -s reload
編寫網頁測試:
#vi /srv/www/test.php
<h3>Welcome!</h3><?php print "<p>This is a PHP example.</p>";?><p>Some static information found here...</p>
然後開啟瀏覽器進行實驗
http://www.example.com/test.php
上面並沒有開啟 --with-pgsql 支援,因為暫時還麼用到,等用到再更新,如果想自己加入的話可以直接如下:
#cd $PHP_SRC_HOME
#./configure --with-pgsql=/path/to/pgsql + 加其他的就好了
PS :
遇到的依賴問題:
#yum -y install libxml2 libxml2-develautoconf
libiconv 依賴問題
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
#tar -zxflibiconv-1.14.tar.gz
#cd libiconv-1.14
#./configure --prefix=/opt/php/3rdlibs/libiconv-1.14/
#make && make install
#ls /opt/php/3rdlibs/libiconv-1.14/
1.忽略 libiconv
如果遇到無法引用libiconv的問題,就修改php的Makefile
]# vi Makefile
在EXTRA_LIBS
= ....的最後面加上-liconv
或者:
ZEND_EXTRA_LIBS = -liconv
或者直接設定變數
#make ZEND_EXTRA_LIBS = -liconv
2.加入libconv的安裝目錄
#/configure --with-iconv=/path/to/libiconv
此方法我在後面補充,我在php5.4.10測試,雖然裡面的選項是 --wtih-iconv-dir,但是我測試後只有 --with-iconv是正常的
php-fpm問題
其實我有碰到沒問題的時候,如果有問題就往下看吧 ...
看那些教程 5.3.10貌似是要--enable-fastcgi參數的,但是我 ./configure --help | grep cgi 並沒有找到,根據http://www.php.net/archive/2010.php#id2010-07-22-2上的新聞
Key enhancements in PHP 5.3.3 include:
Added FastCGI Process Manager (FPM) SAPI.
加上我查看參數的結果 fpm 已經開始實驗性整合了,根據http://www.php.net/archive/2011.php#id2011-11-29-1的新聞
PHP-FPM is no longer marked as EXPERIMENTAL.
php 5.4 rc2 已經取消實驗屬性
http://php-fpm.org/downloads/
PHP Core (PHP 5.3.x < 5.3.3)
方法一(不推薦):
#cd /usr/local/src/php/php-5.3.10
#mv sapi/fpm sapi/fpm.bak
#svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm
有錯誤提示,但是可以通過編譯
方法二:
這是我自己整理的php 5.3.10-fpm 替換 $(PHP_SRC_HOME)/sapi/fpm
適用於php5.3.10的 php-fpm
http://download.csdn.net/detail/qzier_go/4059294點擊開啟連結
方法三(推薦):
我在自己製作了一個patch放在github 上了,經測試有效
https://github.com/Qzi/webstore
php-5.3.10-fpm-unofficial-by-Qzi.patch
https://github.com/Qzi/webstore/wiki
#sbin/php-fpm -v
PHP 5.3.10 (fpm-fcgi) (built: Feb 12 2012 15:47:26)Copyright (c) 1997-2009 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
Reference:
https://writer.zoho.com/public/6b6a49b6dcbb8205336873dd09e1b3517a451cd1e1176acb29ac6183f6c6c0976db04614eed231e5
Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建勝過Apache十倍的Web伺服器(第6版)
http://blog.s135.com/nginx_php_v6/