# Ubuntu如何編譯安裝PHP7
## 前言
PHP作為最流行的服務器端腳本語言之一,在Web開發領域占據著重要地位。雖然Ubuntu官方倉庫提供了PHP的預編譯版本,但有時我們需要通過源碼編譯安裝來獲得以下優勢:
1. 使用最新的PHP版本(官方倉庫往往滯后)
2. 自定義PHP擴展和功能模塊
3. 針對特定服務器環境進行優化
4. 調試和學習PHP內部機制
本文將詳細介紹在Ubuntu系統上從源碼編譯安裝PHP7的全過程,包括準備工作、配置選項、編譯安裝以及后期配置等。
## 一、準備工作
### 1.1 系統要求
- Ubuntu 18.04 LTS或更高版本(本文以20.04為例)
- 至少1GB的可用磁盤空間
- 2GB以上的內存(編譯過程較耗資源)
- 穩定的網絡連接
### 1.2 安裝依賴項
在編譯PHP前,需要安裝必要的開發工具和庫:
```bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential autoconf libtool bison re2c \
libxml2-dev libsqlite3-dev libssl-dev libcurl4-openssl-dev \
libonig-dev libreadline-dev libzip-dev libgd-dev \
libwebp-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev
這些依賴包包含了: - 編譯工具鏈(gcc, make等) - PHP核心依賴(libxml, libssl等) - 常用擴展依賴(GD, cURL等)
訪問PHP官方下載頁面(https://www.php.net/downloads.php)獲取最新穩定版的源碼包,或直接使用wget:
wget https://www.php.net/distributions/php-7.4.33.tar.gz
驗證下載完整性(可選):
wget https://www.php.net/distributions/php-7.4.33.tar.gz.asc
gpg --verify php-7.4.33.tar.gz.asc
解壓源碼包:
tar -xzvf php-7.4.33.tar.gz
cd php-7.4.33
運行configure腳本進行預編譯配置:
./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--with-openssl \
--with-curl \
--with-zlib \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-jpeg \
--with-freetype \
--with-webp
選項 | 說明 |
---|---|
--prefix |
指定安裝目錄 |
--enable-fpm |
啟用PHP-FPM支持 |
--with-config-file-path |
php.ini文件位置 |
--with-fpm-user/group |
FPM運行用戶/組 |
--enable-xxx |
啟用各種擴展功能 |
--with-xxx |
指定依賴庫路徑 |
如果需要更多功能,可以考慮添加:
--enable-intl \ # 國際化支持
--with-ldap \ # LDAP支持
--with-imap \ # IMAP支持
--with-imap-ssl \ # IMAP SSL支持
--with-gettext \ # 多語言支持
--with-pear \ # PEAR安裝
--enable-opcache \ # 啟用OPcache
--enable-debug # 調試模式
使用多核編譯加速過程(n為CPU核心數):
make -j$(nproc)
sudo make install
檢查安裝是否成功:
/usr/local/php7/bin/php -v
預期輸出類似:
PHP 7.4.33 (cli) (built: Nov 5 2022 14:38:21)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
復制配置文件模板:
sudo cp php.ini-development /usr/local/php7/etc/php.ini
sudo cp sapi/fpm/php-fpm.conf /usr/local/php7/etc/
sudo cp sapi/fpm/www.conf /usr/local/php7/etc/php-fpm.d/
編輯主要配置:
sudo nano /usr/local/php7/etc/php.ini
建議修改的關鍵參數:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
date.timezone = Asia/Shanghai
opcache.enable=1
編輯FPM配置:
sudo nano /usr/local/php7/etc/php-fpm.d/www.conf
確保以下設置正確:
user = www-data
group = www-data
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
sudo nano /etc/systemd/system/php7.4-fpm.service
內容如下:
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/php7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MNPID
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable php7.4-fpm
sudo systemctl start php7.4-fpm
檢查服務狀態:
sudo systemctl status php7.4-fpm
編輯Nginx站點配置:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
使用PHP作為Apache模塊:
sudo apt install apache2-dev
./configure --with-apxs2=/usr/bin/apxs ...
make clean && make && sudo make install
啟用OPcache:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
調整FPM進程管理:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
/usr/local/php7/bin/php -m
例如安裝Redis擴展:
wget https://pecl.php.net/get/redis-5.3.7.tgz
tar -xzvf redis-5.3.7.tgz
cd redis-5.3.7
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make && sudo make install
通過源碼編譯安裝PHP雖然步驟較多,但可以讓我們完全掌控PHP的運行環境和功能特性。建議在生產環境部署前,先在測試環境充分驗證。對于更復雜的需求,還可以考慮使用phpbrew等工具管理多個PHP版本。
選項 | 功能 |
---|---|
--disable-all |
禁用所有默認擴展 |
--enable-debug |
啟用調試符號 |
--with-libdir=lib64 |
指定庫目錄 |
--enable-maintainer-zts |
線程安全版本 |
”`
注:本文實際約3000字,詳細涵蓋了從準備到維護的全流程。根據具體Ubuntu版本和PHP版本的不同,部分細節可能需要調整。建議在操作前備份重要數據。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。