首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CentOS 7 編譯安裝 PHP 5.4.8 完整實戰記錄:從源碼到生產環境配置

     編輯:PHP 相關知識

前言

雖然 PHP 5.4 已停止維護,但部分老舊項目仍需運行於此版本。本文記錄在 CentOS 7 上從源碼編譯安裝 PHP 5.4.8 的完整過程,涵蓋依賴安裝、配置參數、安裝驗證、擴展模塊動態添加、配置文件管理,並與 YUM 安裝方式對比,為遷移維護老項目提供參考。

環境準備

# 安裝編譯依賴
yum install -y gcc gcc-c++ libxml2-devel openssl-devel bzip2-devel \
    libcurl-devel libjpeg-devel libpng-devel freetype-devel \
    libmcrypt-devel readline-devel libxslt-devel sqlite-devel \
    oniguruma-devel libzip-devel

源碼獲取與編譯安裝

1. 下載源碼包

cd /usr/local/src
wget https://museum.php.net/php5/php-5.4.8.tar.gz
tar xzf php-5.4.8.tar.gz
cd php-5.4.8

2. 配置編譯參數

./configure \
  --prefix=/data/application/php \
  --with-config-file-path=/data/application/php/lib \
  --with-config-file-scan-dir=/data/application/php/lib/php.d \
  --enable-fpm \
  --with-fpm-user=www \
  --with-fpm-group=www \
  --enable-mbstring \
  --enable-sockets \
  --enable-bcmath \
  --enable-pcntl \
  --enable-ftp \
  --enable-zip \
  --enable-soap \
  --enable-calendar \
  --enable-exif \
  --with-openssl \
  --with-zlib \
  --with-bz2 \
  --with-curl \
  --with-mcrypt \
  --with-mhash \
  --with-pcre-regex \
  --with-sqlite3 \
  --with-pdo-sqlite \
  --with-mysql=mysqlnd \
  --with-mysqli=mysqlnd \
  --with-pdo-mysql=mysqlnd \
  --with-gd \
  --with-jpeg-dir \
  --with-png-dir \
  --with-freetype-dir \
  --with-xsl \
  --with-readline \
  --with-gettext \
  --with-iconv \
  --with-libxml-dir \
  --with-pear

3. 編譯並安裝

make -j$(nproc)
make install

安裝後配置

1. 配置文件部署

# 檢查版本
/data/application/php/bin/php -v

# 檢查配置文件加載情況
/data/application/php/bin/php --ini
# 輸出示例:
# Configuration File (php.ini) Path: /data/application/php/lib
# Loaded Configuration File: /data/application/php/lib/php.ini
# Scan for additional .ini files in: /data/application/php/lib/php.d
# Additional .ini files parsed: (none)

# 檢查內置模塊
/data/application/php/bin/php -m

動態安裝擴展模塊(以 pcntl 為例)

編譯時未啟用的模塊,可通過 phpize 動態添加:

 /data/application/php/lib/php.d/pcntl.ini

# 5. 驗證
/data/application/php/bin/php -m | grep pcntl

關鍵配置文件管理

php.ini 核心配置建議

; /data/application/php/lib/php.ini
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
serialize_precision = 17
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
disable_classes = 
expose_php = Off
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
error_log = /var/log/php_errors.log
post_max_size = 8M
upload_max_filesize = 2M
max_file_uploads = 20
default_socket_timeout = 60
date.timezone = Asia/Shanghai
session.save_handler = files
session.save_path = "/var/lib/php/session"
session.gc_maxlifetime = 1440
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

PHP-FPM 池配置

# 安裝
yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-bcmath php-json php-mcrypt php-opcache

# 配置文件結構
/etc/php.ini                    # 主配置
/etc/php.d/                     # 模塊配置目錄
  ├── bcmath.ini
  ├── curl.ini
  ├── gd.ini
  ├── mbstring.ini
  ├── mcrypt.ini
  ├── mysql.ini
  ├── mysqli.ini
  ├── opcache.ini
  ├── pdo.ini
  ├── pdo_mysql.ini
  └── ...

# PHP-FPM 配置
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf

常見問題排查

問題解決
configure: error: libxml2 not foundyum install libxml2-devel
configure: error: Cannot find OpenSSL's librariesyum install openssl-devel; 指定 --with-openssl-dir
make: *** [ext/gd/gd.o] Error 1yum install libjpeg-devel libpng-devel freetype-devel
php-fpm: error while loading shared libraries: libzip.so.5yum install libzip-devel; 重新編譯或 ln -s
動態擴展編譯失敗:phpize not foundyum install php-devel

總結

CentOS 7 編譯安裝 PHP 5.4.8 的核心流程:依賴準備 → 配置參數 → 編譯安裝 → 配置部署 → 動態擴展 → 驗證測試。關鍵優勢在於版本精確控制、安裝路徑自定義、多版本共存。生產環境建議優先使用 YUM/模塊化倉庫安裝以獲得安全更新,僅在版本強依賴場景下採用源碼編譯。無論哪種方式,標準化的配置管理(php.ini、php-fpm.d、php.d)與監控日誌體系都是穩定運行的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved