環境準備
sudo apt-get update
sudo apt-get install -y build-essential libxml2-dev libssl-dev libcurl4-openssl-dev \
libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libreadline-dev \
libbz2-dev libxslt-dev libzip-dev autoconf
編譯安裝 PHP 5.3.3
cd /usr/local/src
wget https://museum.php.net/php5/php-5.3.3.tar.gz
tar -zxvf php-5.3.3.tar.gz
cd php-5.3.3
./configure \
--prefix=/usr/local/php-5.3.3 \
--with-config-file-path=/usr/local/php-5.3.3/etc \
--with-mcrypt \
--with-gettext \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-zlib \
--with-curl \
--with-openssl \
--enable-bcmath \
--enable-zip \
--enable-pcntl
make -j$(nproc)
sudo make install
配置 php-fpm
sudo cp /usr/local/php-5.3.3/etc/php-fpm.conf.default /usr/local/php-5.3.3/etc/php-fpm.conf
# 編輯 pid、error_log、include 等
sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
sudo chmod +x /etc/init.d/php-fpm
sudo update-rc.d php-fpm defaults
編譯安裝 Memcache 擴充 (非 Memcached)
cd /usr/local/src
wget https://pecl.php.net/get/memcache-3.0.8.tgz # PHP 5.3 相容版本
tar -zxvf memcache-3.0.8.tgz
cd memcache-3.0.8
/usr/local/php-5.3.3/bin/phpize
./configure --with-php-config=/usr/local/php-5.3.3/bin/php-config
make && sudo make install
啟用擴充
# 編輯 php.ini
echo 'extension=memcache.so' | sudo tee -a /usr/local/php-5.3.3/etc/php.ini
# 驗證
/usr/local/php-5.3.3/bin/php -m | grep memcache
# 輸出 memcache 即成功
啟動 Memcached 服務 (伺服器端)
sudo apt-get install -y memcached
sudo systemctl enable memcached
sudo systemctl start memcached
# 測試
telnet 127.0.0.1 11211
# stats → 顯示版本資訊即正常
PHP 測試連線
<?php
$mem = new Memcache;
$mem->connect('127.0.0.1', 11211) or die('連線失敗');
echo 'Version: ' . $mem->getVersion();
$mem->set('key', 'value', 0, 60);
echo $mem->get('key');
?>
⚠️ 重要提醒
- PHP 5.3 已於 2014 年停止安全更新,生產環境**強烈建議升級至 PHP 8.1+**
- 新專案請直接使用
apt install php8.3 php8.3-memcache (或 php-memcached)
- 若必須維護舊專案,請將編譯好的 PHP 打包為 Docker 映像,隔離執行