標籤:目錄 cte tin stat handles nali system mat 應用
給PHP安裝擴充的方式有好多
一、重新編譯
進入PHP源碼目錄./configure --prefix=/usr/local/php ...[其他編譯參數]
二、通過phpize添加擴充
進入PHP原始碼擴充應用目錄ext,例如:
/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/
在pcntl目錄下執行phpize命令然後在configure,運行結果如下:
[[email protected] pcntl]# phpizeConfiguring for:PHP Api Version: 20090626Zend Module Api No: 20090626Zend Extension Api No: 220090626[[email protected] pcntl]# ./configure --with-php-config=/usr/local/php/bin/php-configchecking for grep that handles long lines and -e... /bin/grepchecking for egrep... /bin/grep -Echecking for a sed that does not truncate output... /bin/sedchecking for cc... ccchecking for C compiler default output file name... a.outchecking whether the C compiler works... yeschecking whether we are cross compiling... nochecking for suffix of executables... checking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether cc accepts -g... yeschecking for cc option to accept ISO C89... none neededchecking how to run the C preprocessor... cc -Echecking for icc... nochecking for suncc... nochecking whether cc understands -c and -o together... yeschecking for system library directory... libchecking if compiler supports -R... nochecking if compiler supports -Wl,-rpath,... yeschecking build system type... x86_64-unknown-linux-gnuchecking host system type... x86_64-unknown-linux-gnuchecking target system type... x86_64-unknown-linux-gnuchecking for PHP prefix... /usr/local/phpchecking for PHP includes... -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/libchecking for PHP extension directory... /usr/local/php/lib/php/extensions/no-debug-zts-20090626checking for PHP installed headers prefix... /usr/local/php/include/phpchecking if debug is enabled... nochecking if zts is enabled... nochecking for re2c... noconfigure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.checking for gawk... gawkchecking whether to enable pcntl support... yes, sharedchecking for fork... yeschecking for waitpid... yeschecking for sigaction... yeschecking for getpriority... yeschecking for setpriority... yeschecking for wait3... yeschecking for sigprocmask... yeschecking for sigwaitinfo... yeschecking for sigtimedwait... yeschecking for ld used by cc... /usr/bin/ldchecking if the linker (/usr/bin/ld) is GNU ld... yeschecking for /usr/bin/ld option to reload object files... -rchecking for BSD-compatible nm... /usr/bin/nm -Bchecking whether ln -s works... yeschecking how to recognize dependent libraries... pass_allchecking for ANSI C header files... yeschecking for sys/types.h... yeschecking for sys/stat.h... yeschecking for stdlib.h... yeschecking for string.h... yeschecking for memory.h... yeschecking for strings.h... yeschecking for inttypes.h... yeschecking for stdint.h... yeschecking for unistd.h... yeschecking dlfcn.h usability... yeschecking dlfcn.h presence... yeschecking for dlfcn.h... yeschecking the maximum length of command line arguments... 1966080checking command to parse /usr/bin/nm -B output from cc object... okchecking for objdir... .libschecking for ar... archecking for ranlib... ranlibchecking for strip... stripchecking if cc supports -fno-rtti -fno-exceptions... nochecking for cc option to produce PIC... -fPICchecking if cc PIC flag -fPIC works... yeschecking if cc static flag -static works... nochecking if cc supports -c -o file.o... yeschecking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yeschecking whether -lc should be explicitly linked in... nochecking dynamic linker characteristics... GNU/Linux ld.sochecking how to hardcode library paths into programs... immediatechecking whether stripping libraries is possible... yeschecking if libtool supports shared libraries... yeschecking whether to build shared libraries... yeschecking whether to build static libraries... nocreating libtoolappending configuration tag"CXX"to libtoolconfigure: creating ./config.statusconfig.status: creating config.hconfig.status: config.h is unchanged
運行完後在make&&make install,運行結果如下:
[[email protected] pcntl]# make/bin/sh /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/libtool --mode=compile cc -I. -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -DPHP_ATOM_INC -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/include -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/main -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/pcntl.c -o pcntl.lo mkdir .libs cc -I. -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -DPHP_ATOM_INC -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/include -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/main -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/pcntl.c -fPIC -DPIC -o .libs/pcntl.o/bin/sh /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/libtool --mode=compile cc -I. -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -DPHP_ATOM_INC -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/include -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/main -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/php_signal.c -o php_signal.lo cc -I. -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -DPHP_ATOM_INC -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/include -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/main -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/php_signal.c -fPIC -DPIC -o .libs/php_signal.o/bin/sh /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/libtool --mode=link cc -DPHP_ATOM_INC -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/include -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/main -I/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -o pcntl.la -export-dynamic -avoid-version -prefer-pic -module -rpath /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modules pcntl.lo php_signal.lo cc -shared .libs/pcntl.o .libs/php_signal.o -Wl,-soname -Wl,pcntl.so -o .libs/pcntl.socreating pcntl.la(cd .libs && rm -f pcntl.la && ln -s ../pcntl.la pcntl.la)/bin/sh /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/libtool --mode=install cp ./pcntl.la /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modulescp ./.libs/pcntl.so /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modules/pcntl.socp ./.libs/pcntl.lai /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modules/pcntl.laPATH="$PATH:/sbin"ldconfig -n /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modules----------------------------------------------------------------------Libraries have been installed in:/usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/modulesIf you ever happen to want to link against installed librariesin a given directory, LIBDIR, you must either use libtool, andspecify the full pathname of the library, or use the `-LLIBDIR‘flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH‘ environment variable during execution - add LIBDIR to the `LD_RUN_PATH‘ environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR‘ linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf‘See any operating system documentation about shared libraries formore information, such as the ld(1) and ld.so(8) manual pages.----------------------------------------------------------------------Build complete.Don‘t forget to run ‘make test‘.[[email protected] pcntl]# make testBuild complete.Don‘t forget to run ‘make test‘.PHP Warning: Module ‘pcntl‘ already loaded in Unknown on line 0Warning: Module ‘pcntl‘ already loaded in Unknown on line 0PHP Warning: Module ‘pcntl‘ already loaded in Unknown on line 0Warning: Module ‘pcntl‘ already loaded in Unknown on line 0=====================================================================PHP : /usr/local/php/bin/php PHP_SAPI : cliPHP_VERSION : 5.3.27ZEND_VERSION: 2.3.0PHP_OS : Linux - Linux qzltxx 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64INI actual : /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntl/tmp-php.iniMore .INIs : CWD : /usr/local/src/EZHTTP-master/soft/php-5.3.27/ext/pcntlExtra dirs : VALGRIND : Not used=====================================================================TIME START 2015-01-23 08:12:17=====================================================================FAIL Test pcntl wait functionality [tests/001.phpt] FAIL pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait() [tests/002.phpt] FAIL pcntl: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK [tests/003.phpt] FAIL Bug #47566 (return value of pcntl_wexitstatus()) [tests/bug47566.phpt] FAIL pcntl_alarm() [tests/pcntl_alarm.phpt] FAIL pcntl_exec() [tests/pcntl_exec.phpt] FAIL pcntl_exec() 2 [tests/pcntl_exec_2.phpt] FAIL pcntl_exec() 3 [tests/pcntl_exec_3.phpt] FAIL Test function pcntl_fork() by calling it with its expected arguments [tests/pcntl_fork_basic.phpt] FAIL Test function pcntl_fork() by testing the process isolation in the forking hierarchy father -> son -> grandson where father can not knows his grandson [tests/pcntl_fork_variation.phpt] FAIL Test pcntl_get_last_error() [tests/pcntl_get_last_error.phpt] FAIL pcntl_signal() [tests/pcntl_signal.phpt] FAIL pcnt_signal_dispatch() [tests/pcntl_signal_dispatch.phpt] FAIL pcntl_wait() [tests/pcntl_wait.phpt] FAIL Closures as a signal handler [tests/signal_closure_handler.phpt] =====================================================================TIME END 2015-01-23 08:12:21=====================================================================TEST RESULT SUMMARY---------------------------------------------------------------------Exts skipped : 0Exts tested : 29---------------------------------------------------------------------Number of tests : 15 15Tests skipped : 0 ( 0.0%) --------Tests warned : 0 ( 0.0%) ( 0.0%)Tests failed : 15 (100.0%) (100.0%)Expected fail : 0 ( 0.0%) ( 0.0%)Tests passed : 0 ( 0.0%) ( 0.0%)---------------------------------------------------------------------Time taken : 4 seconds==========================================================================================================================================FAILED TEST SUMMARY---------------------------------------------------------------------Test pcntl wait functionality [tests/001.phpt]pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait() [tests/002.phpt]pcntl: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK [tests/003.phpt]Bug #47566 (return value of pcntl_wexitstatus()) [tests/bug47566.phpt]pcntl_alarm() [tests/pcntl_alarm.phpt]pcntl_exec() [tests/pcntl_exec.phpt]pcntl_exec() 2 [tests/pcntl_exec_2.phpt]pcntl_exec() 3 [tests/pcntl_exec_3.phpt]Test function pcntl_fork() by calling it with its expected arguments [tests/pcntl_fork_basic.phpt]Test function pcntl_fork() by testing the process isolation in the forking hierarchy father -> son -> grandson where father can not knows his grandson [tests/pcntl_fork_variation.phpt]Test pcntl_get_last_error() [tests/pcntl_get_last_error.phpt]pcntl_signal() [tests/pcntl_signal.phpt]pcnt_signal_dispatch() [tests/pcntl_signal_dispatch.phpt]pcntl_wait() [tests/pcntl_wait.phpt]Closures as a signal handler [tests/signal_closure_handler.phpt]=====================================================================You may have found a problem in PHP.This report can be automatically sent to the PHP QA team athttp://qa.php.net/reports and http://news.php.net/php.qa.reportsThis gives us a better understanding of PHP‘s behavior.If you don‘t want to send the report immediately you can chooseoption"s"to save it.You can then email it to [email protected] later.Do you want to send this report now? [Yns]: n[[email protected] pcntl]# make installInstalling shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20090626/
最後修改php.ini設定檔,在最後一行添加,然後重啟apache
extension=pcntl.so
三、有些擴充可以通過pecl命令添加擴充
例如安裝Libevent擴充直接輸入命令pecl install Libevent會在目錄
/usr/local/php/lib/php/extensions/no-debug-zts-20090626/
下產生Libevent.so,最後修改設定檔php.ini(同上一個方法)
php添加擴充外掛程式