溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何安裝PHP7及其php擴展安裝的流程

發(fā)布時間:2020-03-31 15:26:15 來源:億速云 閱讀:427 作者:小新 欄目:編程語言

今天小編給大家分享的是如何安裝PHP7及其php擴展安裝的流程,很多人都不太了解,今天小編為了讓大家更加了解PHP7及其php擴展安裝的流程,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦

如何安裝PHP7及其php擴展安裝的流程

一、編譯安裝PHP

1. 下載源碼包并解壓

源碼包地址:http://php.net/downloads.php

下載源碼包

當(dāng)前PHP最新本門是7.2.9,下載 php-7.2.9 源碼包

wget http://be2.php.net/get/php-7.2.9.tar.gz/from/this/mirror -O php-7.2.9.tar.gz

解壓源碼包

解壓縮

tar zxf php-7.2.9.tar.gz

進入解壓縮后的目錄,查看解壓的文件

[root/usr/local/src/php-7.2.9]# ll
總用量 4.1M
-rw-rw-r--  1 root root  84K 8月  14 14:26 acinclude.m4
-rw-r--r--  1 root root 309K 8月  14 14:26 aclocal.m4
drwxrwxr-x  2 root root   78 8月  14 14:26 appveyor/
-rw-rw-r--  1 root root 1.4K 8月  14 14:26 .appveyor.yml
drwxrwxr-x  2 root root 4.0K 8月  14 14:26 build/
-rwxrwxr-x  1 root root  772 8月  14 14:26 buildconf*
-rw-rw-r--  1 root root  334 8月  14 14:26 buildconf.bat
-rw-rw-r--  1 root root  12K 8月  14 14:26 CODING_STANDARDS
-rw-rw-r--  1 root root  42K 8月  14 14:26 config.guess
-rw-rw-r--  1 root root  36K 8月  14 14:26 config.sub
-rwxr-xr-x  1 root root 2.6M 8月  14 14:26 configure*
-rw-rw-r--  1 root root  46K 8月  14 14:26 configure.ac
-rw-rw-r--  1 root root 3.4K 8月  14 14:26 CONTRIBUTING.md
-rw-rw-r--  1 root root   91 8月  14 14:26 CREDITS
-rw-rw-r--  1 root root  867 8月  14 14:26 .editorconfig
drwxrwxr-x 76 root root 4.0K 8月  14 14:26 ext/
-rw-rw-r--  1 root root  21K 8月  14 14:26 EXTENSIONS
-rw-rw-r--  1 root root  137 8月  14 14:26 footer
-rw-rw-r--  1 root root  13K 8月  14 14:26 .gdbinit
-rw-r--r--  1 root root 1.8K 8月  14 14:26 generated_lists
-rwxrwxr-x  1 root root  581 8月  14 14:26 genfiles*
-rw-rw-r--  1 root root 8.7K 8月  14 14:26 .gitattributes
-rw-rw-r--  1 root root 4.3K 8月  14 14:26 .gitignore
-rw-rw-r--  1 root root 1.2K 8月  14 14:26 header
-rw-rw-r--  1 root root  86K 8月  14 14:26 INSTALL
-rw-r--r--  1 root root    0 8月  14 14:26 install-sh
-rw-rw-r--  1 root root 3.2K 8月  14 14:26 LICENSE
-rw-rw-r--  1 root root 196K 8月  14 14:26 ltmain.sh
drwxrwxr-x  3 root root 4.0K 8月  14 14:26 main/
-rwxrwxr-x  1 root root 4.1K 8月  14 14:26 makedist*
-rw-rw-r--  1 root root 1.1K 8月  14 14:26 Makefile.frag
-rw-rw-r--  1 root root 2.5K 8月  14 14:26 Makefile.gcov
-rw-rw-r--  1 root root 7.0K 8月  14 14:26 Makefile.global
-rw-r--r--  1 root root    0 8月  14 14:26 missing
-rw-r--r--  1 root root    0 8月  14 14:26 mkinstalldirs
-rw-rw-r--  1 root root  90K 8月  14 14:26 NEWS
drwxrwxr-x  2 root root   96 8月  14 14:26 pear/
-rw-rw-r--  1 root root 1.5K 8月  14 14:26 php7.spec.in
-rw-rw-r--  1 root root 2.5K 8月  14 14:26 php.gif
-rw-rw-r--  1 root root  69K 8月  14 14:26 php.ini-development
-rw-rw-r--  1 root root  69K 8月  14 14:26 php.ini-production
-rw-rw-r--  1 root root 6.9K 8月  14 14:26 README.EXT_SKEL
-rw-rw-r--  1 root root 5.0K 8月  14 14:26 README.GIT-RULES
-rw-rw-r--  1 root root 5.3K 8月  14 14:26 README.input_filter
-rw-rw-r--  1 root root 3.4K 8月  14 14:26 README.MAILINGLIST_RULES
-rw-rw-r--  1 root root 1.6K 8月  14 14:26 README.md
-rw-rw-r--  1 root root 5.2K 8月  14 14:26 README.NEW-OUTPUT-API
-rw-rw-r--  1 root root 7.4K 8月  14 14:26 README.PARAMETER_PARSING_API
-rw-rw-r--  1 root root  20K 8月  14 14:26 README.REDIST.BINS
-rw-rw-r--  1 root root  15K 8月  14 14:26 README.RELEASE_PROCESS
-rw-rw-r--  1 root root 5.0K 8月  14 14:26 README.SELF-CONTAINED-EXTENSIONS
-rw-rw-r--  1 root root  15K 8月  14 14:26 README.STREAMS
-rw-rw-r--  1 root root 8.0K 8月  14 14:26 README.SUBMITTING_PATCH
-rw-rw-r--  1 root root 6.6K 8月  14 14:26 README.TESTING
-rw-rw-r--  1 root root 4.9K 8月  14 14:26 README.TESTING2
-rw-rw-r--  1 root root 4.2K 8月  14 14:26 README.UNIX-BUILD-SYSTEM
-rw-rw-r--  1 root root  115 8月  14 14:26 README.WIN32-BUILD-SYSTEM
-rwxrwxr-x  1 root root  84K 8月  14 14:26 run-tests.php*
drwxrwxr-x 10 root root  110 8月  14 14:26 sapi/
drwxrwxr-x  4 root root   99 8月  14 14:26 scripts/
-rwxrwxr-x  1 root root 2.1K 8月  14 14:26 server-tests-config.php*
-rwxrwxr-x  1 root root  52K 8月  14 14:26 server-tests.php*
-rwxrwxr-x  1 root root  108 8月  14 14:26 snapshot*
-rw-rw-r--  1 root root   10 8月  14 14:26 stamp-h.in
drwxrwxr-x 10 root root  133 8月  14 14:26 tests/
drwxrwxr-x  3 root root   33 8月  14 14:26 travis/
-rw-rw-r--  1 root root 1.9K 8月  14 14:26 .travis.yml
drwxrwxr-x  3 root root 4.0K 8月  14 14:26 TSRM/
-rw-rw-r--  1 root root  15K 8月  14 14:26 UPGRADING
-rw-rw-r--  1 root root 3.3K 8月  14 14:26 UPGRADING.INTERNALS
-rwxrwxr-x  1 root root  159 8月  14 14:26 vcsclean*
drwxrwxr-x  3 root root 4.0K 8月  14 14:26 win32/
drwxrwxr-x  3 root root 8.0K 8月  14 14:26 Zend/

2. 編譯安裝

首先安裝PHP編譯安裝所必須的軟件

[root/usr/local/src/php-7.2.9]# yum -y install gcc gcc++ libxml2-devel libicu-devel

configure指定安裝目錄,啟用fpm

[root/usr/local/src/php-7.2.9]# ./configure --prefix=/usr/local/php7 --enable-fpm

編譯安裝

[root/usr/local/src/php-7.2.9]# make && make install
...省略...
Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
Installing PHP CLI binary:        /usr/local/php7/bin/
Installing PHP CLI man page:      /usr/local/php7/php/man/man1/
Installing PHP FPM binary:        /usr/local/php7/sbin/
Installing PHP FPM defconfig:     /usr/local/php7/etc/
Installing PHP FPM man page:      /usr/local/php7/php/man/man8/
Installing PHP FPM status page:   /usr/local/php7/php/php/fpm/
Installing phpdbg binary:         /usr/local/php7/bin/
Installing phpdbg man page:       /usr/local/php7/php/man/man1/
Installing PHP CGI binary:        /usr/local/php7/bin/
Installing PHP CGI man page:      /usr/local/php7/php/man/man1/
Installing build environment:     /usr/local/php7/lib/php/build/
Installing header files:          /usr/local/php7/include/php/
Installing helper programs:       /usr/local/php7/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php7/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/php7/lib/php/
[PEAR] Archive_Tar    - installed: 1.4.3
[PEAR] Console_Getopt - installed: 1.4.1
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util       - installed: 1.4.2
[PEAR] PEAR           - installed: 1.10.5
Warning! a PEAR user config file already exists from a previous PEAR installation at '/root/.pearrc'. You may probably want to remove it.
Wrote PEAR system config file at: /usr/local/php7/etc/pear.conf
You may want to add: /usr/local/php7/lib/php to your php.ini include_path
/usr/local/src/php-7.2.9/build/shtool install -c ext/phar/phar.phar /usr/local/php7/bin
ln -s -f phar.phar /usr/local/php7/bin/phar
Installing PDO headers:           /usr/local/php7/include/php/ext/pdo/

3. 為php命令建立軟鏈接,加入到環(huán)境變量中

[root/usr/local/src/php-7.2.9]# ln -s /usr/local/php7/bin/php /usr/local/bin/php

4. 創(chuàng)建配置文件,并將其復(fù)制到正確的位置

查看PHP基本信息

[root/usr/local/src/php-7.2.9]# php -ini
phpinfo()
PHP Version => 7.2.9

System => Linux 10.0.2.15 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64
Build Date => Aug 17 2018 09:09:29
Configure Command =>  './configure'  '--prefix=/usr/local/php7' '--enable-fpm'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/php7/lib
Loaded Configuration File => (none)
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API => 20170718
PHP Extension => 20170718
Zend Extension => 320170718
Zend Extension Build => API320170718,NTS
PHP Extension Build => API20170718,NTS
......

將php.ini復(fù)制到 Configuration File (php.ini) Path

[root/usr/local/src/php-7.2.9]# cp php.ini-development /usr/local/php7/lib/php.ini

5. 配置php-fpm

為php-fpm命令建立軟鏈接,加入到環(huán)境變量中

[root/usr/local/src/php-7.2.9]$ ln -s /usr/local/php7/sbin/php-fpm /usr/local/sbin/php-fpm

復(fù)制php配置文件目錄下的 php-fpm.conf.default,并重命名為 php-fpm.conf

[root/usr/local/src/php-7.2.9]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

復(fù)制php配置文件目錄下的 php-fpm.d/www.conf.default,并重命名為 php-fpm.d/www.conf

[root/usr/local/src/php-7.2.9]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

編輯 php-fpm.d/www.conf,設(shè)置 php-fpm 模塊使用 www-data 用戶和 www-data 用戶組的身份運行。

vim /usr/local/php7/etc/php-fpm.d/www.conf

user = www-data
group = www-data

需要著重提醒的是,如果文件不存在,則阻止 Nginx 將請求發(fā)送到后端的 PHP-FPM 模塊, 以避免遭受惡意腳本注入的攻擊

編輯 php.ini,文件中的配置項 cgi.fix_pathinfo 設(shè)置為 0 。

[root/usr/local/src/php-7.2.9]# vim /usr/local/php7/lib/php.ini

cgi.fix_pathinfo=0

啟動php-fpm

[root/usr/local/src/php-7.2.9]# php-fpm

[root/usr/local/src/php-7.2.9]# ss -tlnp | grep php-fpm
LISTEN  0  128  127.0.0.1:9000  *:*  users:(("php-fpm",pid=4689,fd=5),("php-fpm",pid=4688,fd=5),("php-fpm",pid=4687,fd=7))

6. 配置 Nginx 使其支持 PHP 應(yīng)用

[root/etc/nginx]# vim conf.d/default.conf

server {
    listen 80;

    root /vagrant;

    location / {
        index  index.php;
    }

    location ~* \.php$ {
        fastcgi_index   index.php;
        fastcgi_pass    127.0.0.1:9000;
        include       fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

創(chuàng)建 /vagrant/index.php,并填入 <?="Hello world!";

[root/etc/nginx]# echo '<?="Hello world!";' > /vagrant/index.php

[root/etc/nginx]# cat /vagrant/index.php
<?="Hello world!";

啟動nginx

[root/etc/nginx]# nginx

[root/etc/nginx]# ss -tlnp | grep nginx
LISTEN  0  128  *:80  *:*  users:(("nginx",pid=4725,fd=6),("nginx",pid=4724,fd=6))

7. 訪問 curl localhost,輸出 Hello world!,說明PHP + Nginx安裝成功

[root/etc/nginx]# curl localhost
Hello world!

二、編譯安裝PHP擴展

1. php擴展安裝流程

從 pecl.php.net 查找需要的擴展

選擇擴展的版本(注意查看擴展版本與PHP版本的兼容性)

解壓縮下載的文件

判斷文件的安裝類型

> 直裝:(解壓出來就是 .so 文件),直接復(fù)制文件到擴展目錄,在php.ini中開啟相應(yīng)的擴展即可
> 編譯安裝:需要先進行編譯,再復(fù)制文件到擴展目錄,在php.ini中開啟相應(yīng)的擴展

2. 編譯安裝步驟

在解壓縮的擴展目錄下執(zhí)行phpize

若 phpize 沒有加入到環(huán)境變量,則需要使用絕對路徑。例如 /usr/local/php7/bin/phpize。
phpize是用來擴展php擴展模塊的。
通過phpize可以建立php的外掛模塊。

configure 配置編譯參數(shù)

主要是配置php配置文件參數(shù),例如:

./configure --with-php-config=/usr/local/php7/bin/php-config

若配置編譯參數(shù)執(zhí)行過程中出現(xiàn)錯誤,則需要安裝 autoconf。
autoconf可以自動地配置軟件源代碼。

contos/redhat:yum install autoconf
ubuntu:apt-get install autoconf

編譯安裝

make && make install

復(fù)制 .so 擴展文件到PHP擴展目錄(若已經(jīng)自動復(fù)制,則忽略)

在php.ini中開啟擴展,配置相應(yīng)的擴展參數(shù)

3. 安裝redis擴展實例

php -m查看已安裝的php擴展

[root/usr/local/src/php-7.2.9]# php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter

[Zend Modules]

從 pecl.php.net 下載 redis-4.1.1 擴展,并解壓縮

[root/usr/local/src]# wget https://pecl.php.net/get/redis-4.1.1.tgz
--2018-08-17 10:00:41--  https://pecl.php.net/get/redis-4.1.1.tgz
正在解析主機 pecl.php.net (pecl.php.net)... 104.236.228.160
正在連接 pecl.php.net (pecl.php.net)|104.236.228.160|:443... 已連接。
已發(fā)出 HTTP 請求,正在等待回應(yīng)... 200 OK
長度:220894 (216K) [application/octet-stream]
正在保存至: “redis-4.1.1.tgz”

100%[========================================================================================================================================================================>] 220,894      192KB/s 用時 1.1s

2018-08-17 10:00:44 (192 KB/s) - 已保存 “redis-4.1.1.tgz” [220894/220894])

[root/usr/local/src]# tar zxf redis-4.1.1.tgz

[root/usr/local/src]# cd redis-4.1.1

在解壓縮的擴展目錄下執(zhí)行phpize

[root/usr/local/src/redis-4.1.1]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718

configure 配置編譯參數(shù)

[root/usr/local/src/redis-4.1.1]# ./configure --with-php-config=/usr/local/php7/bin/php-config

編譯安裝

[root/usr/local/src/redis-4.1.1]# make && make install

查看編譯好的擴展文件 redis.so,已經(jīng)自動復(fù)制到php擴展目錄下

[root/usr/local/src/redis-4.1.1]# ll /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
總用量 7.1M
-rwxr-xr-x 1 root root 3.5M 8月  17 09:15 opcache.a*
-rwxr-xr-x 1 root root 1.9M 8月  17 09:15 opcache.so*
-rwxr-xr-x 1 root root 1.8M 8月  17 10:06 redis.so*

編輯 php.ini,添加 extension=redis

[root/usr/local/src/redis-4.1.1]# vim /usr/local/php7/lib/php.ini

extension=redis

此時再使用php -m查看已安裝的php擴展,redis已經(jīng)在擴展列表中

[root/usr/local/src/redis-4.1.1]# php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter

[Zend Modules]

3. 安裝xdebug擴展實例

從 pecl.php.net 下載 xdebug-2.6.1 擴展,并解壓縮

[root/usr/local/src]# wget https://pecl.php.net/get/xdebug-2.6.1.tgz

[root/usr/local/src]# tar zxf xdebug-2.6.1.tgz

[root/usr/local/src]# cd xdebug-2.6.1

在解壓縮的擴展目錄下執(zhí)行phpize

[root/usr/local/src/xdebug-2.6.1]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718

configure 配置編譯參數(shù)

[root/usr/local/src/xdebug-2.6.1]# ./configure --with-php-config=/usr/local/php7/bin/php-config

編譯安裝

[root/usr/local/src/xdebug-2.6.1]# make && make install

查看編譯好的擴展文件 redis.so,已經(jīng)自動復(fù)制到php擴展目錄下

[root/usr/local/src/xdebug-2.6.1]# ll /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
總用量 8.4M
-rwxr-xr-x 1 root root 3.5M 8月  17 09:15 opcache.a*
-rwxr-xr-x 1 root root 1.9M 8月  17 09:15 opcache.so*
-rwxr-xr-x 1 root root 1.8M 8月  17 10:06 redis.so*
-rwxr-xr-x 1 root root 1.3M 8月  17 11:16 xdebug.so*

編輯 php.ini,添加 zend_extension=xdebug

[root/usr/local/src/xdebug-2.6.1]# vim /usr/local/php7/lib/php.ini

zend_extension=xdebug

此時再使用php -m查看已安裝的php擴展,xdebug已經(jīng)在擴展列表中

[root/usr/local/src/xdebug-2.6.1]# php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xdebug
xml
xmlreader
xmlwriter

[Zend Modules]
Xdebug

以上就是如何安裝PHP7及其php擴展安裝流程的簡略介紹,當(dāng)然詳細使用上面的不同還得要大家自己使用過才領(lǐng)會。如果想了解更多,歡迎關(guān)注億速云行業(yè)資訊頻道哦!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI