【准備工作】
所有操作需要在root用戶下
本機測試案例系統信息:centos7.3
安裝路徑:/usr/local/php
先安裝如下依賴包
$ yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
下載PHP7.2.0安裝包,點此下載 [密碼:pm0q]
解壓php-7.2.0.tar.gz 然后進入目錄,編譯。命令如下:
$ tar -zxvf php-7.2.0.tar.gz
$ cd php-7.2.0
$ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --with-openssl --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl
說明:由於PHP7.2不再支持mysql,而是用mysqli取代。因此會出現上面圖中所示的warning。不過沒關系,如果需要安裝php的mysql擴展,文章后面會有說明。
編譯完成之后,執行安裝命令:
$ make && make install
說明:如果是在阿里雲購買的雲服務器,安裝到這里可能會出現如下錯誤:
virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
解決方案:https://www.cnblogs.com/rxbook/p/8005944.html
安裝過程大約需要20分鍾時間.
在之前編譯的源碼包中,找到 php.ini-production,復制到/usr/local/php下,並改名為php.ini:
$ cp php.ini-production /usr/local/php/php.ini
[可選項] 設置讓PHP錯誤信息打印在頁面上
$ vim /usr/local/php/php.ini
display_errors = On
復制啟動腳本:
$ cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
$ chmod +x /etc/init.d/php-fpm
修改php-fpm配置文件:
$ cd /usr/local/php/etc
$ cp php-fpm.conf.default php-fpm.conf
$ vim php-fpm.conf
① 去掉 pid = run/php-fpm.pid 前面的分號
$ cd php-fpm.d
$ cp www.conf.default www.conf
$ vim www.conf
② 修改user和group的用戶為當前用戶(也可以不改,默認會添加nobody這個用戶和用戶組)
$ /etc/init.d/php-fpm start #php-fpm啟動命令
$ /etc/init.d/php-fpm stop #php-fpm停止命令
$ /etc/init.d/php-fpm restart #php-fpm重啟命令
$ ps -ef | grep php 或者 ps -A | grep -i php #查看是否已經成功啟動PHP
由於PHP7.2不再支持mysql,而是用mysqli取代,如果需要安裝php的mysql擴展,請看這里。
下載安裝包:鏈接:https://pan.baidu.com/s/1bqDutYZ 密碼:ae40
解壓,並進入目錄:
$ tar -zxvf mysql-24d32a0.tar.gz
$ cd mysql-24d32a0
$ /usr/local/php/bin/phpize #使用phpize初始化
#編譯mysql擴展,使用mysql native driver 作為mysql鏈接庫
$ ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=mysqlnd
接下來,安裝:
$ make && make install
最后,編輯php.ini文件,在最后面加入 extension=mysql.so 即可。
$ vim /usr/local/php/php.ini
重啟PHP,查看phpinfo()
$ /etc/init.d/php-fpm restart
Linux PHP7的openssl擴展安裝
Linux環境下使用PHPmailer發送郵件時,出現如下錯誤:
SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (32690)
出現這個問題的原因是當初編譯安裝PHP缺少了ssl庫。
可以重新再次編譯PHP,加上--enable-openssl (或者 --with-openssl)參數即可。
但是如果只為了安裝這一個擴展就去重新編譯,未免有點麻煩,其實可以簡單一點,只要安裝openssl.so擴展就可以了。
備注:其他的擴展安裝方法同理。
(1)找到之前編譯安裝PHP的安裝包,或者從php的官網下載php7(本例使用php7,其他版本的PHP類似)
(2)解壓並進入文件夾
cd php7.0/ext/openssl
(3)運行 phpize:
/usr/local/php/bin/phpize
備注,如果出現如下錯誤:Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
【解決辦法】cp ./config0.m4 ./config.m4 即可解決
(4)編譯和安裝
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config make && make install
(5)然后進入最后提示的目錄,查看文件:
(6)將 openssl.so 復制到PHP的擴展目錄下:
cp openssl.so /usr/local/php/include/php/ext
(7)找到php.ini,在最后面添加如下內容:
extension=openssl.so
(8)重啟php-fpm和nginx/apache,查看phpinfo();
