本文主要和大家分享最詳細的linux安裝php過程,之前寫好了nginx的安裝配置,後面就是php的安裝和mysql的安裝,不過時間有限,而且放一篇裡也太長,所以都是分開來寫,php安裝完畢後就是mysql的配置了。
一:檢查是否安裝了php
1)yum安裝檢查:yum list installed |grep php
2)rpm安裝檢查:rpm -qa |grep php
3)自己編譯安裝的有多種方式查詢,例如尋找php的執行程式,或者檢查進程ps -ef |grep php等方法。
二:檢查如果沒有安裝php,即可準備php安裝前的前置軟體,用yum install xxxx即可安裝,當然不嫌麻煩也可以自己編譯安裝,這裡就不詳細說了。
1)zlib以及zlib-devel zlib提供資料壓縮的函數庫,也是nginx的前置軟體,由於zlib需要編譯php的zlib擴充,而編譯中會需要使用zlib.h這個標頭檔,標頭檔在zlib-devel中,因此也需要下載zlib-devel。
2)libxml2以及libxml-devel libxml2是一個c語言的xml程式庫,可以簡單的對xml進行各種操作,並且支援xpath查詢,以及部分支援xslt轉換等功能。
3)libxslt以及libxslt-devel 如果不安裝libxslt-devel會提示找不到xslt.config檔案,xslt是轉換xml到其他格式的擴充。
3)openssl以及openssl-devel 安全通訊端層密碼庫
4)jpeg IJG的jpeg庫,php的gd庫所需。
5)libpng 是c語言寫的比較底層的讀寫png檔案的跨平台的庫,可以協助輕鬆的讀寫png檔案的每一行像素,php的gd庫所需。
6)freetype以及freetype-devel 免費開源的且可移植的字型引擎,提供統一的介面訪問多種字型格式,這兩個都是gd庫的依賴軟體,所以如果沒有安裝,或者版本太低,在安裝php時設定的是安裝gd庫則會報錯,另外不安裝-devel也是會報錯的,因為編譯擴充的時候會缺少ft2build.h檔案,報錯如。
7)gd gd是php處理圖形的擴充庫
8)curl,由於我的yum裡的版本太低了,所以直接自己編譯安裝的,安裝方式很簡單,也就是wget curl下載地址後tar解壓,建立/usr/local/curl檔案夾,然後進入curl解壓後的檔案夾裡配置./configure --prefix=/usr/local/curl即可,最後make以及make install就安裝好了。
注意:xxx-devel是xxx軟體的開發包,包含標頭檔以及靜態庫甚至源碼。
三:php下載安裝
1)用wget下載php的tar.gz檔案:wget http://br2.php.net/get/php-7.2.2.tar.gz
2)解壓tar.gz檔案:tar zxvf php-7.2.2.tar.gz
3)建立待會要安裝php的檔案夾:mkdir /usr/local/php,然後進入解壓後的php安裝包檔案夾裡,配置configure:
./configure --prefix=/usr/local/php --with-curl=/usr/local/curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip
注意:
--prefix=安裝目錄
--with-使用包名稱[=包目錄]
--enable-需要啟用的功能
四:配置php相關檔案
1)配置php.ini,這是php的設定檔:cp /home/myload/php-7.2.2/php.ini-development /usr/local/php/lib/php.ini
2)配置php-fpm.conf,這是php-fpm設定檔:cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
3)配置www.conf,配置使用者的檔案:cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
4)將php-fpm開機檔案複製到init.d檔案夾中一份方便啟動php:cp -R sbin/php-fpm /etc/init.d/php-fpm
五:啟動php,確定是否安裝成功
執行命令/etc/init.d/php-fpm即可
查看是否啟動:ps -ef |grep php既可以看到php啟動了哪些進程
六:安裝成功後配置nginx支援php
1)更改php.ini檔案,vim /usr/local/php/lib/php.ini
通過尋找cgi.fix_pathinfo=1這個配置,並去除注釋,並改為cgi.fix_pathinfo=0,這裡並不屬於nginx支援php配置相關,而是專屬於nginx下php的一個安全性漏洞,如果這裡值為1,使用者方可以通過上傳圖片來上傳木馬,然後通過url訪問該圖片地址,並在地址後加入/xxx.php將該圖片作為php檔案運行,這是只有在nginx裡才會存在的問題,apache和iis都沒有該問題
以上問題可以直接參看鳥哥的部落格,寫的相當詳細:http://www.laruence.com/2010/05/20/1495.html
2)配置web專用的組和使用者
添加www使用者組:groupadd www
添加www使用者組下的使用者www:useradd -g www www
3)更改php-fpm.conf配置
將user=nobody的注釋去掉,並將nobody改成上面配置的www使用者
將group=nobody的注釋去掉,並將nobody改成上面配置的www使用者組
最後檢查php-fpm.conf最後的include的值是不是正確的www.conf目錄位址,如果不正確則換成正確的目錄位址。
4)更改www.conf配置
將user=nobody的注釋去掉,並將nobody改成上面配置的www使用者
將group=nobody的注釋去掉,並將nobody改成上面配置的www使用者組
5)更改nginx.conf檔案 /etc/local/nginx/conf/nginx.conf
將#user=nobody去掉注釋並改為user=www
去除 location ~ \.php${...}這段代碼的注釋,並將fastcgi_param裡的/scripts改為$document_root
最後將location / {...}裡預設index後面添加上index.php,確保index.php作為預設的首頁
6)重啟php-fpm和nginx,可以killall php-fpm然後再/etc/init.d/php-pfm即可重啟,/usr/local/nginx/sbin/nginx -s stop即可停止nginx,然後執行/usr/local/nginx/sbin/php即可重啟。
7)在html目錄裡隨便建立一個php檔案,內容是phpinfo();,然後在瀏覽器中訪問該檔案地址,看是否得到正確的php相關資訊,如果正確顯示則配置成功。
七:配合apache支援php,這個後續再添加,to be continue...