[LAMP]【轉載】——PHP7.0的安裝

Jelly_lyj發表於2017-03-18

***原文連結: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......

相關文章