***原文連結:http://my.oschina.net/sallency/blog/541287
php編譯過程報錯解決可參考:http://www.cnblogs.com/z-ping/archive/2012/06/18/2553929.html
安裝 libmcrypt mhash mcrypt
CentOS 7 預設不包含這三個模組,所以得手動安裝,注意mcrypt依賴前兩者
libmcrypt-2.5.8.tar.gz
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
mhash-0.9.9.tar.gz
http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
mcrypt-2.6.8.tar.gz
http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/
問題:configure: error: *** libmcrypt was not found
解決辦法:
# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
或者
# ldconfig
php 編譯安裝
前幾天試著裝了一次,雖然最後也裝好了但感覺亂亂的,在鳥哥的指導下才知道 mysql 擴充套件已經被 7.0 廢除了,此後使用 mysqli pdo-mysql 並且推薦使用 php 自帶的 mysqlnd 驅動 配置引數,並且 php-fpm 也已經被 php 納入,直接在選項中開啟即可,我在官網看 --enable-cgi 是預設配置且 --enable-fast-cgi 已經被廢除,--enable-cgi 即可讓 fpm 模式呼叫
ladp在64的系統裡可能存在寫庫關聯問題,執行下面的命令
cp -frp /usr/lib64/libldap* /usr/lib/
部分引數釋意
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mcrypt \ # mcrypt 加密演算法
--with-mhash \ # mhash 加密演算法
--with-mysqli=mysqlnd \ # 推薦使用 mysqlnd 驅動 mysql已被廢棄
--with-pdo-mysql=mysqlnd \ # 推薦使用 mysqlnd 驅動 mysql已被廢棄
--with-gd \ # gd庫
--with-iconv \
--with-zlib \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--with-apxs2=/usr/bin/apxs \ # 讓 php 直接編譯到 apache 的模組中去
--with-apache=/etc/httpd \ # 靜態編譯apache的模組 編譯完後去httpd.conf中載入so
--with-openssl \
--with-xmlrpc \
--with-bz2 \
--with-gettext \ # 多語言應用開發
--with-readline \ # readline只能在linux下win使用stream_get_line
--with-recode \
--with-ldap \ # 目錄協議
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-fpm \ # php-fpm 程式管理器
--enable-cgi \ # 預設開啟php的cgi sapi
--enable-xml \
--enable-bcmath \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \ #pcntl 多程式擴充套件模組
--enable-sockets \
--enable-sysvmsg \ #訊息佇列
--enable-sysvshm \ #記憶體共享模組 linux
--enable-shmop \ #記憶體共享模組 linux/windows
--enable-zip \
--enable-soap \
--enable-session \
--enable-opcache \ # opcache 快取優化
--enable-cli # cli 其實預設就是開啟的 若禁用同時要--without-pear
編譯引數
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mcrypt \
--with-mhash \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--with-apxs2=/usr/bin/apxs \
--with-openssl \
--with-xmlrpc \
--with-bz2 \
--with-gettext \
--with-readline \
--with-recode \
--with-ldap \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-fpm \
--enable-cgi \
--enable-xml \
--enable-bcmath \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvshm \
--enable-shmop \
--enable-zip \
--enable-soap \
--enable-session \
--enable-opcache \
--enable-cli
注意的地方:
1:--enable-cgi --disable-cgi :
在 5.3.0後 enable-cgi 等同於--enable-fastcgi 也就是說此後不需要在額外宣告 --enable-fastcgi,且 --enable-force-cgi-redirect 也預設有效且被廢棄在編譯選項中,要禁用需修改php.ini的cgi.force_redirect為0
2:--with-apxs2 --with-apache:
--with-apxs2是直接把php編譯到apache的模組中去 --with-apache是置頂apache的serverRoot路徑,生成apache的php模組 修改apache配置檔案手動載入:
AddType application/x-httpd-php .php .html .htm
3:php7.0廢除了--with-mysql編譯選項,且推薦使用mysqlnd驅動
複製原始碼包中的 php.ini-development php.ini-production 至 php 安裝目錄下的 etc 中,或者放在系統的 /etc 下也可以
將 php 的 bin 和 sbin 加入環境變數
echo "export PATH=$PATH:/usr/local/php/bin:/usr/local/php/sbin" >> /etc/profile
source profile
以下記錄的的是我在libmcrypt mhash mcrypt三個模組安裝中遇到的一些問題
# tar xf libmcrypt-2.5.8.tar.gz
# tar xf mcrypt-2.6.8.tar.gz
# tar xf mhash-0.9.9.9.tar.gz
# ./configure --prefix=/usr/local/libmcrypt
# make ; make install
# ./configure --prefix=/usr/local/mhash
# make ; make install
# ./configure --prefix=/usr/local/mcrypt
===>報錯:configure: error: *** libmcrypt was not found
# ./configure --prefix=/usr/local/mcrypt --with-libiconv-prefix=/usr/local/libmcrypt/
===>還是報錯:configure: error: *** libmcrypt was not found
為什麼按照原文中的方法 # export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH我沒有解決這個錯誤:
因為我在安裝libmcrypt和mhash的時候,指定了安裝目錄,所以它們的“lib”是在各自的安裝目錄下(/usr/local/libmcrypt/lib、/usr/local/mhash/lib)而不是在/usr/local/lib下。
然後我試圖將這些在“lib”複製到/usr/local/lib中,然後再編譯:
# ./configure --prefix=/usr/local/mcrypt
沒有出現這個錯誤了但出現了:
===>報錯:configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/"
根據找到的方法:
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/inotify/lib
/usr/local/lib ------>在/etc/ld.so.conf中新增這一行
# ldconfig ------>然後再ldconfig(按找到的方法據說執行了這步就可以解決了)
ldconfig: /usr/local/lib/libmhash.so.2 不是符號連線
ldconfig: /usr/local/lib/libmcrypt.so.4 不是符號連線 <===但是我的出現了報錯
對比了一下/usr/local/libmcrypt/lib、/usr/local/mhash/lib和我複製到/usr/local/lib下的檔案,發現原來的確實存在著連結...
然後嘗試:
# ln -sf libmcrypt.so.4 libmcrypt.so.4.4.8
# ln -sf libmhash.so.2 libmhash.so.2.0.1
再執行:
# ldconfig 沒有報錯了。
但是再編譯,還是報錯configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/"
Pass......