オフライン環境でのpeclインストール
諸事情でネットワーク経由でpeclパッケージのインストールができないので、ファイルからすることに。
pecl.php.net/apcにアクセスできない。
1 2 3 |
[]# pecl install apc No releases available for package "pecl.php.net/apc" install failed |
APC.tgzを別途落としてきて「-O」オプションをつければインストール完了。
1 2 3 4 5 |
// パッケージをダウンロード (もしくはFTPなどで持ってくる) []# wget http://pecl.php.net/get/APC-3.1.13.tgz // -Oオプションをつけてインストール実行 []# pecl install -O APC-3.1.13.tgz |
ちゃんとインストールされている確認。
1 2 3 4 5 |
[]# pecl list Installed packages, channel pecl.php.net: ========================================= Package Version State APC 3.1.13 beta |
OKです!
エラー対応
メモ。
[エラー] autoconf エラー
autoconfがインストールされていないと下記のようなエラーがでる。
1 2 3 4 5 6 7 8 9 |
[]# pecl install -O APC-3.1.13.tgz 55 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. |
yumでインストールしてあげればOK。
1 |
[]# yum install autoconf |
[エラー] Segmentation faultエラー
ZendOptimizerPlusとAPCは共存できず、ほっとくと子プロセスが落ちます。
1 |
[Wed Nov 20 12:10:12 2012] [notice] child pid 18922 exit signal Segmentation fault (11) |
コアファイルを吐かせてgdbで解析してみると一目瞭然。ZendOptimizerPlus.soで落ちてます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[]# gdb /usr/local/zend/apache2/bin/httpd -c /tmp/core.18922 (gdb) where #0 0x00002aeb17141f2c in ?? () from /usr/local/zend/apache2/modules/libphp5.so #1 0x00002aeb3133f6ca in mmap () from /usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so #2 0x00002aeb3133dff9 in mmap () from /usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so #3 0x00002aeb3133e655 in mmap () from /usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so #4 0x00002aeb31339e17 in mmap () from /usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so #5 0x00002aeb3133ace0 in mmap () from /usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so #6 0x00002aeb171a4491 in ?? () from /usr/local/zend/apache2/modules/libphp5.so #7 0x00002aeb17183131 in execute () from /usr/local/zend/apache2/modules/libphp5.so #8 0x00002aeb1715fa91 in zend_execute_scripts () from /usr/local/zend/apache2/modules/libphp5.so #9 0x00002aeb1710cee8 in php_execute_script () from /usr/local/zend/apache2/modules/libphp5.so #10 0x00002aeb171e78fd in ?? () from /usr/local/zend/apache2/modules/libphp5.so #11 0x000000000046392a in ap_run_handler (r=0x4fbf168) at config.c:157 #12 0x0000000000466d6c in ap_invoke_handler (r=0x4fbf168) at config.c:372 #13 0x000000000054a9fe in ap_process_request (r=0x4fbf168) at http_request.c:282 #14 0x0000000000547bb0 in ap_process_http_connection (c=0x4f73718) at http_core.c:190 #15 0x000000000046aca2 in ap_run_process_connection (c=0x4f73718) at connection.c:43 #16 0x0000000000565904 in child_main (child_num_arg=<value optimized out>) at prefork.c:662 #17 0x0000000000565baa in make_child (s=0x4988d90, slot=25) at prefork.c:758 #18 0x00000000005664c1 in perform_idle_server_maintenance (_pconf=<value optimized out>, plog=<value optimized out>, s=<value optimized out>) at prefork.c:893 #19 ap_mpm_run (_pconf=<value optimized out>, plog=<value optimized out>, s=<value optimized out>) at prefork.c:1097 #20 0x0000000000450ad5 in main (argc=5, argv=0x7fff81fba228) at main.c:740 |
APCのほうがパフォーマンスがあがるのでoptimizerplusを無効にして、apacheリスタートすればOK。
1 2 3 4 |
[]# vim /usr/local/zend/etc/conf.d/optimizerplus.ini (設定を全てコメントアウト) []# /etc/init.d/zend-server restart |