好記性不如爛筆頭,把本身安裝的步驟記錄下來php
一、下載php-5.2.8以及php-5.2.8-fpm-0.5.10.diff.gz,放到/usr/local/src目錄mysql
二、解壓php-5.2.8到/usr/local/src/php-5.2.8nginx
三、php-fpm打補丁c++
cd /usr/local/srcsql
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1api
四、安裝一些必要的東西app
1) yum -y install curl curl-develcurl
2) libmcryptphp-fpm
wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz(備註,這個版本安裝始終報錯,我換成2.5.7的就好,地址ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz)google
編譯時候報錯 :configure: error: C++ compiler cannot create executables(沒有安裝c++) 解決方案: yum install gcc gcc-c++ gcc-g77
./configure --prefix=/usr/local/libmcrypt
make && make install
3) yum install mysql(只安裝客戶端,沒有安裝server端)
編譯報錯 :Cannot find MySQL header files under yes
解決方案:yum install -y mysql-devel
又報這個錯:Cannot find libmysqlclient under /usr 。
經過查找libmysqlclient,發現是在/usr/lib64/mysql/目錄內的libmysqlclient.so.16.0.0作的軟鏈接,PHP默認是去的 /usr/lib/搜索,因此沒有找到.找到問題了就好解決了.
解決方案1: cp -rp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
解決方案2 : 編譯時加上 --with-mysql=mysqlnd (未親自驗證 - -)
四、編譯php
cd php-5.2.8
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/lbi64/mysql --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-debug --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt-dir=/usr/local/libmcrypt --enable-ftp --with-openssl
結果報錯,configure:error:xml2-config not found。 解決方案: yum install libxml2-devel
再次編譯,仍是報錯。undefined reference to `_icon
須要安裝iconv,官網文檔http://www.gnu.org/software/libiconv/ ,下載安裝到/usr/local/libiconv
記得每次從新編譯的時候make clean下
再次編譯,成功
(注意,有時候仍是會出錯,
那麼./configure … 以後,修改下 Makefile,找到其中的
EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl - lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm - lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt
在最後面添加 -liconv
)
make && make install 成功
很奇怪的一點就是居然沒有php.ini,我用php --ini沒找到任何的php.ini,可是仍是可以正常使用php,看來它是使用的默認配置;好吧,我從網上down了一份放到/usr/local/php/etc目錄下
而後稍微的修改下php-fpm.conf , 運行/usr/local/php/sbin/php-fpm start.啓動了,能夠經過nginx代理訪問了,下面會講下php-fpm的配置
五、php-fpm配置
發現一個詭異的問題,我把 pm.max_children 設置爲1024,fpm的錯誤日誌就會不停的報 「WARNING: [pool www] child 9730 exited with code 255 after 0.013489 seconds from start」
而我設置爲1000(最新消息,1019也沒問題。這尼瑪坑爹貨)的話就不會報錯,這個太詭異了,網上google了半天,有不少人有相似的問題可是都沒有解決方法
並且若是是1024的話。service php-fpm stop是不起做用的:
kill -QUIT `cat $php_fpm_PID` 這句命令並不起做用,須要用到#killall -9 php-fpm才能殺掉php-fpm
而若是是1019的話就沒問題,這這這這、我也無語了