Centos6.8源碼編譯安裝PHP7
一、下載源碼包
打開php官網http://php.net/點擊導航欄的Downloads進入下載頁面:http://php.net/downloads.php下載想要安裝的版本,這裏下載最新版的php-7.1.8 的源碼包。
下載環境源碼包wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz 可以選擇版本,這裏下載最新版libiconv-1.15.tar.gz
二、解壓源碼包並安裝環境包
1 tar zxvf libiconv-1.15.tar.gz 2 cd libiconv-1.15 3 ./configure --prefix=/usr/local/libiconv4 make && make install
三、添加運行php7程序的用戶和組
1 groupadd www 2 useradd -g www www
四、編譯安裝php7
1 tar zxvf php-7.1.8.tar.gz 2 cd php-7.1.8 3 ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-mcrypt --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv=/usr/local/libiconv/ --enable-xml --enable-bcmath --enable-inline-optimization --enable-mbregex --enable-fpm --with-openssl --with-xmlrpc --enable-zip --enable-soap --without-pear --enable-session --with-libxml-dir --with-zlib --with-curl --enable-dba --enable-ftp --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-gd-native-ttf --with-gettext --enable-mbstring --enable-pcntl --without-pdo-sqlite --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-opcache
此時,如果報錯的話,一般是缺少環境包所致,根據報錯缺少的包進行yum安裝
yum -y install gcc g++ libxml2 libxml2-devel openssl openssl-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel
實際上這裏的配置項比上述還多,可以使用 ./configure --help命令查看所有選項,這裏註意在php7中 --with-mysql
然後執行編譯安裝
1 make 2 make install
php的默認安裝路徑已經指定為 /usr/local/php7 ,其中配置文件的默認安裝路徑為 /usr/local/php7/etc .
此時在安裝目錄下沒有php.ini文件,需要把解壓包路徑下拷貝一份到 /usr/local/php7/etc ,並更名為 php.init .
1 cp /usr/local/src/php-7.1.8/php.ini-development /usr/local/php7/etc/php.ini
1 cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
1 cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm7 2 chmod +x /etc/init.d/php-fpm7 3 /etc/init.d/php-fpm7 start
此時,基本上是可以啟動了。接著就是根據自己的需求修改配置文件
vim /usr/local/php7/etc/php.ini
######避免PHP信息暴露在http頭中 expose_php = Off ######避免暴露php調用mysql的錯誤信息 display_errors = Off ######在關閉display_errors後開啟PHP錯誤日誌(路徑在php-fpm.conf中配置) log_errors = On ######設置PHP的擴展庫路徑 extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/" ######設置PHP的時區 date.timezone = PRC
修改配置文件 php-fpm.conf
vim /usr/local/php7/etc/php-fpm.conf ######設置錯誤日誌的路徑 error_log = /var/log/php-fpm/error.log ######引入www.conf文件中的配置 include=/usr/local/php7/etc/php-fpm.d/*.conf
www.conf 這是 php-fpm 進程服務的擴展配置文件
######設置用戶和用戶組 user = www group = www ######根據nginx.conf中的配置fastcgi_pass unix:/dev/shm/php-fpm7.sock;設置PHP監聽 ; listen = 127.0.0.1:9000 #####不建議使用 listen = /dev/shm/php-fpm7.sock ######使用sock監聽需開啟 isten.owner = www listen.group = www listen.mode = 0660 ######開啟慢日誌 slowlog = /var/log/php-fpm/$pool-slow.log request_slowlog_timeout = 10s
修改nginx配置文件
location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/dev/shm/php-fpm7.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
由於php7已經棄用mysql擴展改為mysqli和mysqlpdo,但是有的程序需要mysql支持運行,則可以通過安裝mysql擴展來達到這種目的
五、php添加擴展
首先在php網站下載mysql擴展包:http://git.php.net/?p=pecl/database/mysql.git;a=summary 這裏下載的是最新版mysql-230a828.tar.gz,上傳到服務器
接著進行解壓編譯安裝
tar zxvf mysql-230a828.tar.gz cd mysql-230a828 #使用phpize進行初始化(phpize在php7安裝目錄) /usr/local/php7/bin/phpize #編譯mysql擴展,使用mysql native driver作為mysql鏈接庫 ./configure --with-php-config=/usr/local/php7/bin/php-config --with-mysql=mysqlnd make && make install
編譯安裝成功後會得到一個鏈接庫的路徑
Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/
編輯php.ini文件
1 vim /usr/local/php7/etc/php.ini
在最後加入鏈接庫so文件
[mysql] extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/mysql.so
最後重載php和nginx服務
/etc/init.d/php-fpm7 reload
/etc/init.d/nginx reload
通過訪問測試文件index.php可查看安裝情況以及已安裝擴展模塊
1 <?php 2 phpinfo(); 3 ?>
類似地,可以根據需要安裝其他擴展模塊.
Centos6.8源碼編譯安裝PHP7