centos php php-fpm install

好記性不如爛筆頭,把本身安裝的步驟記錄下來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的話就沒問題,這這這這、我也無語了     

相關文章
相關標籤/搜索