PHP 5.4 引入許多新特性與效能提升,但預設編碼改為 UTF-8 導致 GBK 專案的 htmlspecialchars 輸出空白。以下為完整升級步驟:
wget https://cn2.php.net/get/php-5.4.21.tar.gz/from/this/mirror tar zxf php-5.4.21.tar.gz cd php-5.4.21 # 若專案為 GBK 編碼,修改 ext/standard/html.c 第 372 行 # 將 cs_utf_8 改為 cs_8859_1 以恢復預設 ISO-8859-1 行為
./configure --prefix=/usr/local/php5.4 \ --with-zlib --enable-bcmath --with-curl --with-curlwrappers \ --enable-mbregex --enable-mbstring --with-gd --enable-gd-native-ttf \ --with-openssl --with-mhash --enable-sockets --with-xmlrpc \ --enable-zip --enable-soap --without-pear \ --with-mysql --with-mysqli --with-pdo-mysql --enable-ftp \ --with-jpeg-dir --with-freetype-dir --with-png-dir \ --enable-fpm --with-fpm-user=www --with-fpm-group=www
make ZEND_EXTRA_LIBS='-liconv' make install cp php-fpm.conf.default /usr/local/php5.4/etc/php-fpm.conf cp php.ini-development /usr/local/php5.4/lib/php.ini # 修改 php.ini:short_open_tag=On, date.timezone=Asia/Shanghai, error_reporting=E_ALL & ~E_NOTICE
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on service php-fpm start
wget https://pecl.php.net/get/ZendOpcache tar zxf ZendOpcache cd zendopcache-7.0.2 /usr/local/php5.4/bin/phpize ./configure --with-php-config=/usr/local/php5.4/bin/php-config make && make install # php.ini 加入 opcache 設定並重啟 php-fpm
完成後透過 phpinfo() 驗證版本與 Opcode 快取是否生效。