升級到 PHP 5.3.6 筆記


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 安裝 PHP 5.3.6
wget http://hk2.php.net/get/php-5.3.6.tar.gz/from/hk.php.net/mirror
tar zxvf php-5.3.6.tar.gz
cd php-5.3.6
./configure --prefix=/usr/local/php5-cgi --enable-fpm --with-libxml-dir --with-openssl --with-zlib --with-curl --with-curlwrappers --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir= --enable-gd-native-ttf --enable-gd-jis-conv --enable-mbstring --with-mcrypt --with-mhash --with-mysql=/usr/local/mysql5 --with-mysqli=/usr/local/mysql5/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql5 --enable-pcntl --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-sockets --enable-sqlite-utf8 --with-libxml-dir --enable-zend-multibyte --disable-rpath --with-pcre-dir
make -j4
make install

# 修改 php-fpm.conf 因為新版本已經不再使用 XML 而改為 INI
mv /usr/local/php5-cgi/etc/php-fpm.conf /usr/local/php5-cgi/etc/php-fpm.conf.bak
cp /usr/local/php5-cgi/etc/php-fpm.conf.default /usr/local/php5-cgi/etc/php-fpm.conf
vim /usr/local/php5-cgi/etc/php-fpm.conf

# 根據下面的資料修改裡面的內容
[global]
pid = /usr/local/php5-cgi/logs/php-fpm.pid
error_log = /usr/local/php5-cgi/logs/php-fpm.log
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 5s
daemonize = yes

;Pool Definitions
[default]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.mode = 0666
user = !!!!!
group = !!!!!
pm = static
pm.max_children = 5
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 120
slowlog = log/$pool.log.slow
rlimit_files = 1024
rlimit_core = 0

# 從 PHP source 中建立 php-fpm 的管理 shell script
cp -f sapi/fpm/init.d.php-fpm /usr/local/php5-cgi/php-fpm.sh
chmod 755 /usr/local/php5-cgi/php-fpm.sh

# 修改 php-fpm.sh 裡面的 PID 檔案
vim /usr/local/php5-cgi/php-fpm.sh
+ php_fpm_PID=${prefix}/logs/php-fpm.pid
- #php_fpm_PID=${prefix}/var/run/php-fpm.pid

# 修改 /etc/rc.local 加入
/usr/local/php5-cgi/php-fpm.sh start

# 重開現有的 PHP
/usr/local/php5-cgi/php-fpm.sh stop
/usr/local/php5-cgi/php-fpm.sh start

# 另外重開後可能會出現錯誤,這是由於某些參數已不存在於 php.ini
# 這時候只需要在 php.ini 相應參數前加上 ; 則可

# 重新安裝 eaccelerator
wget "http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Feaccelerator%2Ffiles%2F&ts=1310995800&use_mirror=nchc"
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
/usr/local/php5-cgi/bin/phpize
./configure --with-php-config=/usr/local/php5-cgi/bin/php-config
make
make install

# 修改 extension_path
extension_dir = "/usr/local/php5-cgi/lib/php/extensions/no-debug-non-zts-20090626/"

# 再重開 php-fpm
/usr/local/php5-cgi/php-fpm.sh restart

# 如果發現 phpinfo 中沒有正確出現上面的 eaccelerator
# 可以查看一下 include_path 是否有錯
# 至於 Zend Optimizer 的安裝應該被改名了.暫時已用不上所以先暫停安裝
# 到目前為止應該算是升級成功了

參考:
http://xfeng.me/upgrade-php-and-eaccelerator/