前言
本著能懶則懶的原則,之前我都是寶塔纺弊、lnmp腳本等“一鍵”
再不濟(jì)也得來個(gè) apt/yum install php
什么牛欢?源碼 make install
? 編譯參數(shù)一言難盡淆游,勸退勸退...我只是想要個(gè)開發(fā)環(huán)境而已
沒關(guān)系傍睹!我來整理一下常用模塊以及參數(shù)!環(huán)境為 ubuntu/debian
為啥不用
docker
?
開發(fā)環(huán)境有時(shí)候想跑一跑代碼犹菱,還得先進(jìn)入到容器里拾稳,里面通常又沒有宿主機(jī)的一些工具(有的容器甚至連ping都沒有),來回切換感覺很麻煩
總結(jié)
- 源碼壓縮包要檢查 sha256
- 快速安裝 只看 1腊脱、2访得、4、5
- 3 為模塊對(duì)應(yīng)的參數(shù)表
開始
1. 準(zhǔn)備源碼
檢查壓縮包的完整性陕凹,與官網(wǎng) sha256比較
wget https://www.php.net/distributions/php-8.1.2.tar.gz
sha256sum php-8.1.2.tar.gz
tar zxvf php-8.1.2.tar.gz
2. 準(zhǔn)備編譯環(huán)境
安裝以下包
// debian/ubuntu
apt install gcc make pkg-config libxml2-dev libsqlite3-dev libonig-dev libcurl4-openssl-dev libssl-dev libzip-dev
# GD
apt install zlib1g-dev libpng-dev
3. 編譯參數(shù)
官方的拓展分類
根據(jù)需要的模塊添加其后對(duì)應(yīng)的參數(shù)
./configure 各種參數(shù)
模塊 | 參數(shù) | 作用 | 備注 |
---|---|---|---|
--prefix= | 安裝目錄前綴 | 核心配置項(xiàng) | |
--with-pear | 安裝pear | ||
--with-config-file-path | 指定 php.ini的位置 | ||
FPM | --enable-fpm | 詳細(xì)配置 | |
FPM | --with-fpm-user | 運(yùn)行者 | |
FPM | --with-fpm-group | 運(yùn)行組 | |
FPM | --with-fpm-systemd | 使用systemd運(yùn)行管理 | |
GD | --enable-gd | 使用推薦版本GD | 詳細(xì)配置 |
mbstring | --enable-mbstring | 多字節(jié)字符串 | |
CURL | --with-curl | ||
PDO_MYSQL | --with-pdo-mysql | 默認(rèn)使用的是 Mysqlnd | |
OpenSSL | --with-openssl | ||
Zip | --with-zip | ||
sockets | --enable-sockets |
4. 編譯命令
包含常用模塊悍抑,可以直接使用
./configure --prefix=/usr/local --with-pear --enable-fpm --with-fpm-systemd --enable-gd --enable-mbstring --with-curl --with-pdo-mysql --with-openssl --with-zip
5. 編譯&安裝
編譯并安裝后
復(fù)制 php.ini 到默認(rèn)目錄/usr/local/lib/
編譯的時(shí)候可指定
make && make install
cp php.ini-development /usr/local/lib/php.ini
檢查 php安裝是否正確
$ php -v
PHP 8.1.2 (cli) (built: Feb 18 2022 08:17:32) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
$ php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
復(fù)制 fpm 配置文件鳄炉、運(yùn)行服務(wù)文件
www.conf
php-fpm.conf
php-fpm.service
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp sapi/fpm/php-fpm.service /etc/systemd/system/
修改 fpm 用戶和組,默認(rèn)為nobody
編譯的時(shí)候可指定
user = www-data
group = www-data
/usr/local/etc/php-fpm.d/www.conf
修改服務(wù)文件搜骡,取消只讀 不然日志不能讀寫無法啟動(dòng)
ProtectSystem=false
/etc/systemd/system/php-fpm.service
設(shè)置自啟動(dòng)并運(yùn)行
systemctl enable php-fpm
service php-fpm start
service php-fpm status
* php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-02-18 09:46:29 UTC; 5s ago
Main PID: 397784 (php-fpm)
本地起服務(wù)測(cè)試
php -S 0.0.0.0:8080
[附]編譯錯(cuò)誤
No package 'libxml-2.0' found
apt install libxml2-dev
No package ‘sqlite3‘ found
apt install libsqlite3-dev
configure: WARNING: unrecognized options: –with-gd
--with-gd becomes --enable-gd
No package 'zlib' found
apt install zlib1g-dev
No package 'libpng' found
apt install libpng-dev
No package 'oniguruma' found
apt install libonig-dev
No package 'libcurl' found
apt install libcurl4-openssl-dev
No package 'libsystemd' found
apt install libsystemd-dev
No package 'openssl' found
apt install libssl-dev
No package 'libzip' found
apt install libzip-dev