教训!!! 为php 添加一些常用扩展

2020/11/05 07:32
阅读数 68

一、添加scws扩展

php的一些扩展×××地址:https://pecl.php.net/

1、下载scws源码
#wget  http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
2、编译安装scws
先安装一些编译依赖包
#yum install gcc gcc-c++ make  -y
#tar xf scws-1.2.3.tar.bz2
#mkdir -pv /opt/app/      #软件统一安装到/opt/app 目录
#cd scws-1.2.3/
#./configure --prefix=/opt/app/scws 
# make && make install             #确保没有报错
查看是否安装ok
#ll /opt/app/scws/lib/
total 140
-rwxr-xr-x 1 root root    914 Dec 21  2016 libscws.la
lrwxrwxrwx 1 root root     16 Dec 21  2016 libscws.so -> libscws.so.1.1.0
lrwxrwxrwx 1 root root     16 Dec 21  2016 libscws.so.1 -> libscws.so.1.1.0
-rwxr-xr-x 1 root root 136894 Dec 21  2016 libscws.so.1.1.0
试试执行 scws文件
#/opt/app/scws/bin/scws -h
scws (scws-cli/1.2.3)
Simple Chinese Word Segmentation - Command line usage.
Copyright (C)2007 by hightman.
3、开始为php安装scws扩展
#cd scws-1.2.3/phpext/      #一定要先切换到这个表,否则执行失败
#/opt/app/php7/bin/phpize
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012
#./configure --with-php-config=/opt/app/php7/bin/php-config --with-scws=/opt/app/scws
为php7添加scws扩展
#make
#make install
Installing shared extensions:     /opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/
会告知模块安装的路径!!!
4、在php7的配置文件php.ini中添加scws扩展模块
#cd /opt/app/php7/etc
#vim php.ini
…………
extension_dir = "/opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012"   #添加路径
[redis]
extension = redis.so
extension = mongodb.so
extension = apcu.so
;extension = octopus.so
;octopus.disable_eval = On
##添加如下模块###
[scws]
extension = scws.so
scws.default.charset = gbk
scws.default.fpath = /opt/app/scws/etc
然后重启php7使其加载该模块
#kill -usr2 `cat /opt/app/php7/var/run/php-fpm.pid`   #重启php7

二、php5和php7配置文件

php5
#cat etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
 
[www]
user = httpd
group = httpd
listen = 127.0.0.1:9000
 
pm = dynamic
pm.max_children = 1000
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 64
 
pm.max_requests = 5000
rlimit_files = 65535
############################
#cat etc/php.ini 
[PHP]
engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = On
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir = /opt/case/phpinc
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions = "exec,passthru,system,shell_exec,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,popen,pcntl_alarm,pcntl_errno,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal_dispatch,pcntl_signal,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,posix_access,posix_ctermid,posix_errno,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_initgroups,posix_isatty,posix_kill,posix_mkfifo,posix_mknod,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setrlimit,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,var_dump,print_r,phpinfo,php_uname,eval,set_time_limit,highlight_file,show_source,putenv,dl,chgrp,chown,chmod,umask,chroot,chdir,symlink,link,linkinfo,readlink"
disable_classes =
expose_php = Off
max_execution_time = 60
max_input_time = 60
memory_limit = 256M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
;error_log = "/opt/logs/php5/php.error.log"
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
variables_order = "GPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 200M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".:/opt/case/phpinc"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 200M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

extension_dir = "/opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626"
[redis]
extension = redis.so
extension = mongo.so
;extension = octopus.so
;octopus.disable_eval = On

[scws]
extension = scws.so
scws.default.charset = gbk
scws.default.fpath = /opt/app/scws/etc

[Date]
date.timezone = "Asia/Shanghai"

[filter]

[iconv]

[intl]

[sqlite]

[sqlite3]

[Pcre]

[Pdo]

[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=

[Phar]

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1

[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"

[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off

[OCI8]

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10

[bcmath]
bcmath.scale = 0

[browscap]

[Session]
session.save_handler = redis
session.save_path = "tcp://172.16.26.xx:6379?auth=passwd_redis"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 7200
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off

[Assertion]

[COM]

[mbstring]

[gd]

[exif]

[Tidy]
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5

[sysvshm]

[ldap]
ldap.max_links = -1

[mcrypt]

[dba]

[opcache]
;zend_extension = /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
;opcache.enable = 1
;opcache.enable_cli=1
;opcache.memory_consumption=512
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=6000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.save_comments=0
;opcache.enable_file_override=1
######################################3
php7
#cat php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
 
[www]
user = httpd
group = httpd
listen = 127.0.0.1:9001
 
pm = dynamic
pm.max_children = 1000
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 64
 
pm.max_requests = 5000
rlimit_files = 65535
########################################33
#cat php.ini 
[PHP]
engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = Off
;safe_mode = On
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir = /opt/case/phpinc
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions = "exec,passthru,system,shell_exec,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,popen,pcntl_alarm,pcntl_errno,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal_dispatch,pcntl_signal,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,posix_access,posix_ctermid,posix_errno,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_initgroups,posix_isatty,posix_kill,posix_mkfifo,posix_mknod,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setrlimit,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,var_dump,print_r,phpinfo,php_uname,eval,set_time_limit,highlight_file,show_source,putenv,dl,chgrp,chown,chmod,umask,chroot,chdir,symlink,link,linkinfo,readlink"
disable_classes =
expose_php = Off
max_execution_time = 30
max_input_time = 60
memory_limit = 256M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = "/opt/logs/php7/php.error.log"
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
variables_order = "GPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 200M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".:/opt/case/phpinc"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 200M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

extension_dir = "/opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/"
[redis]
extension = redis.so
extension = mongodb.so

[scws]
extension = scws.so
scws.default.charset = gbk
scws.default.fpath = /opt/app/scws/etc

[Date]
date.timezone = "Asia/Shanghai"

[filter]

[iconv]

[intl]

[sqlite]

[sqlite3]

[Pcre]

[Pdo]

[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=

[Phar]

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1

[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"

[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off

[OCI8]

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10

[bcmath]
bcmath.scale = 0

[browscap]

[Session]
session.save_handler = redis
session.save_path = "tcp://172.16.26.xxx:6379?auth=passwd_redis"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 7200
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off

[Assertion]

[COM]

[mbstring]

[gd]

[exif]

[Tidy]
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5

[sysvshm]

[ldap]
ldap.max_links = -1

[mcrypt]

[dba]

[opcache]
;zend_extension = /opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/opcache.so
;opcache.enable = 1
;opcache.enable_cli=1
;opcache.memory_consumption=512
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=6000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.save_comments=0
;opcache.enable_file_override=1

二、添加redis或者mongodb扩展

从php官网扩展下载redis,连接http://pecl.php.net/package/redis
#tar xf redis-2.2.8.tar.bz2
#cd redis-2.2.8 
#/opt/app/php5/bin/phpize
#./configure --with-php-config=/opt/app/php5/bin/php-config
#make
#make install
查看
#ls -l /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626/
然后将扩展模块添加到php.ini 中
#vim php.ini
extension_dir = "/opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626/"
[redis]
extension = redis.so      #添加了redis和mongodb模块
extension = mongodb.so

然后重启php进程使其生效!!!
#kill -usr2 `cat /opt/app/php5/var/run/php-fpm.pid`   #重启php5

三、为php添加swoole扩展

下载地址 http://pecl.php.net/package/swoole

github 地址 https://github.com/swoole/swoole-src/releases?after=v1.9.12

1、swoole介绍
Swoole是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。
最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成了
2、swoole和php版本对应关系
swoole版本和匹配的php版本对应关系如下图:连接:注意:
如果不匹配,编译就会报错如下:
/opt/src/swoole-src/php_swoole.h:147:2: error: #error "require PHP version 5.5 or later."
make: *** [swoole.lo] Error 1

wKiom1ms5IqyCqaVAABFWysMZh8569.jpg

因为我php是5.3.10,所以下载1.9.19版本的swoole!

开始安装

#tar xf swoole-1.9.19.tgz
#cd swoole-1.9.19
#/opt/app/php5/bin/phpize 
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
#./configure
#make && make install
Installing shared extensions:     /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files:          /opt/app/php5/include/php/
4、查看so文件
# ll /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626/
total 3924
-rwxr-xr-x 1 root root  845258 Feb  3  2016 redis.so
-rwxr-xr-x 1 root root 3167018 Sep  4 12:23 swoole.so

5、在php.ini中开启添加swoole.so
#vi php.ini
extension_dir = "/opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626"
[swoole]
extension = swoole.so

6、如果是php-fpm启动的PHP,重启php-fpm
查看
#/opt/app/php5/bin/php -m | grep swoole
swoole
添加完成,测试ok即可!
注意:
在php7执行configure的时候报错
configure: error: Cannot find php-config. Please use --with-php-config=PATH
添加路径即可:
./configure --with-php-config=/opt/app/php7/bin/php-config
#########################################################
补充:在实际环境中,开发要求swoole模块需要支持ssl和nghttp2,使用configure --help查看
得到,可以在编译的时候,加入这2个参数,于是,编译参数变成了:
首先安装依赖包
#yum install openssl openssl-devel libnghttp2 libnghttp2-devel nghttp2 -y
重新编译
#cd swoole-1.9.19
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-openssl --enable-http2
#make
结果报错如下:
In file included from /home/xingliguang/swoole-1.9.19/swoole.c:16:
/home/xingliguang/swoole-1.9.19/php_swoole.h:142:2: error: #error "Enable http2 support, require nghttp2 library."
make: *** [swoole.lo] Error 1
提示需要nghttp2 library,但是nghttp2明明已经安装了,真是太奇怪了,后来在网上找了很多资料,
链接:http://qiita.com/illness072/items/3f6650d200432ed752ff
参考着操作,最后成功编译,操作如下:
#ldconfig
#cd swoole-1.9.19
#vi config.h     
#define HAVE_NGHTTP2 1     #加入此行
创建软连接:
#ln -sv /usr/lib64/libnghttp2.so /usr/local/lib64/libnghttp2.so
#ln -sv /usr/lib64/libnghttp2.so.14 /usr/local/lib64/libnghttp2.so.14
#ln -sv /usr/lib64/libnghttp2.so.14.4.0 /usr/local/lib64/libnghttp2.so.14.4.0
查看
# ll /usr/local/lib64/
total 0
lrwxrwxrwx 1 root root 24 Sep 11 15:46 libnghttp2.so -> /usr/lib64/libnghttp2.so
lrwxrwxrwx 1 root root 27 Sep 11 15:49 libnghttp2.so.14 -> /usr/lib64/libnghttp2.so.14
lrwxrwxrwx 1 root root 31 Sep 11 15:49 libnghttp2.so.14.4.0 -> /usr/lib64/libnghttp2.so.14.4.0
重新执行make就不会报错了,然后执行make install
然后在配置文件php.ini中添加swoole.so 并重启php进程即可。
#############################################################
过了几天开发又提需求了,需要加上--enable-async-redis  --enable-sockets2个参数,但是编译出错
如下:
/home/xingliguang/swoole-1.9.19/swoole_redis.c:20:29: error: hiredis/hiredis.h: No such file or directory
/home/xingliguang/swoole-1.9.19/swoole_redis.c:21:27: error: hiredis/async.h: No such file or directory
网上说是要安装redis,但是我们已经源码方式安装了reidis于是找到了这2个文件:
#ll /opt/app/redis/deps/hiredis/async.h
-rw-rw-r-- 1 root root 5021 Dec 18  2015 /opt/app/redis/deps/hiredis/async.h
#ll/opt/app/redis/deps/hiredis/hiredis.h
-rw-rw-r-- 1 root root 9403 Dec 18  2015 /opt/app/redis/deps/hiredis/hiredis.h
所以添加编译参数重新编译就不报错了,如下:
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-openssl --enable-http2 --enable-async-redis=/opt/app/redis  --enable-sockets
#make 
#make install

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
但是过了2天开发人员说swoole模块不能使用hiredis的功能,我凌乱了,原来不能使用这个参数
--enable-async-redis=/opt/app/redis ,不能跟后面的路径。于是从gitlab下载了hiredis的源码包
#wget  https://codeload.github.com/redis/hiredis/zip/master
#mv master  hiredis-master.zip
#ll 
-rw-r--r--  1 root root     90950 Sep 25 15:09 hiredis-master.zip
解压之后开始编译安装
#unzip hiredis-master.zip
#cd hiredis-master
#make 
#make install
安装好之后,就会在/usr/local/lib目录下生成so文件,如下:
#ll /usr/local/lib
total 556
-rw-r--r-- 1 root root 332286 Sep 25 15:10 libhiredis.a
lrwxrwxrwx 1 root root     18 Sep 25 15:10 libhiredis.so -> libhiredis.so.0.13
-rwxr-xr-x 1 root root 227445 Sep 25 15:10 libhiredis.so.0.13
drwxr-xr-x 2 root root   4096 Sep 25 15:10 pkgconfig
因为系统默认是去/usr/lib64/中加载*.so文件,而我们编译安装hiredis之后,生成的so文件在/usr/local/lib
目录下面,所以创建一个软链接
#ln -sv  /usr/local/lib/libhiredis.so.0.13 /usr/lib64/
#ldconfig

然后重新编译安装swoole扩展
#tar xf swoole-1.9.19.tar.bz2
#cd swoole-1.9.19
#/opt/app/php7/bin/phpize
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-openssl --enable-http2 --enable-async-redis --enable-sockets
#make 
#make install

然后就可以查到swoole扩展了
#/opt/app/php7/bin/php -m | grep swoole

整理后的安装步骤:php7.0 安装swoole
#yum install openssl openssl-devel libnghttp2 libnghttp2-devel nghttp2 -y
#wget  https://codeload.github.com/redis/hiredis/zip/master
#mv master  hiredis-master.zip
#ll 
-rw-r--r--  1 root root     90950 Sep 25 15:09 hiredis-master.zip
解压之后开始编译安装
#unzip hiredis-master.zip
#cd hiredis-master
#make 
#make install
安装好之后,就会在/usr/local/lib目录下生成so文件,如下:
#ll /usr/local/lib
total 556
-rw-r--r-- 1 root root 332286 Sep 25 15:10 libhiredis.a
lrwxrwxrwx 1 root root     18 Sep 25 15:10 libhiredis.so -> libhiredis.so.0.13
-rwxr-xr-x 1 root root 227445 Sep 25 15:10 libhiredis.so.0.13
drwxr-xr-x 2 root root   4096 Sep 25 15:10 pkgconfig
因为系统默认是去/usr/lib64/中加载*.so文件,而我们编译安装hiredis之后,生成的so文件在/usr/local/lib
目录下面,所以创建一个软链接
#ln -sv  /usr/local/lib/libhiredis.so.0.13 /usr/lib64/
#ldconfig
安装swoole
#tar xf swoole-1.9.19.tar.bz2
#cd swoole-1.9.19
#/opt/app/php7/bin/phpize
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-openssl --enable-http2 --enable-async-redis --enable-sockets
#make 
#make install
修改配置文件
#vim  php.ini
extension = swoole.so
然后就可以查到swoole扩展了
#/opt/app/php7/bin/php -m | grep swoole

四、为php添加tideways扩展

适用范围:PHP 5.3, 5.4, 5.5, 5.6 or 7.0
#git clone https://github.com/tideways/php-profiler-extension.git
#cd php-profiler-extension
#phpize
#./configure
#make
#make install
在php.ini中添加
extension=tideways.so
tideways.auto_prepend_library=0
重启php进程生效。

五、为php添加rabbitmq扩展

下载地址
http://pecl.php.net/package/amqp
安装依赖
#yum install librabbitmq librabbitmq-devel -y
#tar xf amqp-1.9.1.tgz
#cd amqp-1.9.1
#phpize
#./configure --with-php-config=/opt/app/php7/bin/php-config 
#make
#make install
在php.ini中添加
extension_dir = "/opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012"
extension = amqp.so
然后重启php进程
查看此模块是否加载
#php -m | grep amqp.so  #如果过滤到,说明加载ok

六、为php添加soap扩展

注意:如果php是编译安装,则需要编译添加扩展,如果是yum安装,可以直接yum添加扩展!

描述:
一台服务器上php没有soap扩展,需要配置。php之前是编译安装的,于是查看了编译参数,发现没有添
加--enable-soap 所以soap模块没有被编译进去。于是我直接yum 安装了php-soap,并拷贝soap.so到
对应的目录,如下
#cp /usr/lib64/php/modules/soap.so /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626
重启了php-fpm进程,通过#php -m | grep soap 也查到了soap模块,但是开发调用的时候依然报错如下:
 调用new \SoapClient()  的时候 报502
于是通过编译添加soap扩展的方式,才解决问题,步骤如下:
#tar xf php-5.3.10-e-dos.tar.bz2
#cd php-5.3.10-e-dos/ext/soap
#/opt/app/php5/bin/phpize
#./configure --with-php-config=/opt/app/php5/bin/php-config 
#make 
#make install
查看生成的soap.so文件
# ll /opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626
total 5116
-rwxr-xr-x 1 root root 1111652 Sep 21 14:00 soap.so
然后在配置文件添加
#cat php.ini
extension_dir = "/opt/app/php5/lib/php/extensions/no-debug-non-zts-20090626"
extension = soap.so
重启php-fpm 就ok了!!!

七、为php7添加inotify和yac扩展

1、首先下载
https://pecl.php.net/package/yac
2、开始编译
#tar xf yac-2.0.2.tgz
#cd yac-2.0.2
#/opt/app/php7/bin/phpize
#./configure --with-php-config=/opt/app/php7/bin/php-config
#make 
#make install
#ll /opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/
#vi /opt/app/php7/etc/php.ini 
extension = yac.so
###########################
#tar xf inotify-2.0.0.tgz 
#cd inotify-2.0.0
#/opt/app/php7/bin/phpize 
# ./configure --with-php-config=/opt/app/php7/bin/php-config 
#make
#make install
#ll /opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/
#vi /opt/app/php7/etc/php.ini 
extension = inotify.so
重启php7的php-fpm进程,然后查看
#/opt/app/php7/bin/php -m

八、一个php7.1安装脚本

#cat php7.1_install.sh 
#!/bin/bash
#
#===========================================================
# Description: Centos6.7下php7.1安装,且安装php常用扩展8个
#===========================================================
# Name:        php7_install.sh
# Author:      wangbo@km.com
# Date:        2017-03-28
# Version:     V1.0
# ChangeLog:   
#===========================================================

down_ip="172.16.66.xx:88"
parkage=(
php-7.1.10
)
soft_dir="/opt/app/php7.1"

result_check(){
        if [[ $? -eq 0 ]];then
                echo -e "\033[01;32m$1 install is finished\033[00m."
        else
                echo -e "\033[01;31m$1 install stoped\033[00m." && continue
        fi

}

php_install(){
        yum -y install freetype-devel libcurl-devel libjpeg-turbo-devel libmcrypt-devel libpng-devel libxml2-devel php-gd openssl-devel
        config="./configure --prefix=${soft_dir} \
        --disable-ipv6 \
        --enable-dba \
        --enable-ftp \
        --enable-magic-quotes \
        --enable-mbstring \
        --enable-sockets \
        --enable-pcntl \
        --enable-fpm \
        --enable-zip \
        --enable-bcmath \
        --with-config-file-path=${soft_dir}/etc \
        --with-curl \
        --with-freetype-dir \
        --with-gd \
        --with-jpeg-dir \
        --with-mcrypt \
        --with-mhash \
        --with-mysql=mysqlnd \
        --with-mysqli=mysqlnd \
        --with-openssl \
        --with-pdo-mysql=mysqlnd \
        --with-zlib"
        tar xvf $1.tar.bz2 && cd $1/ && $config && make && make install

}

if_exist(){
        [[ ! -a /opt/src/$1.tar.bz2 ]] && wget -cP /opt/src http://${down_ip}/$1.tar.bz2
        echo -e "\033[01;32m$1 download is finished,install in beginning...\033[00m."
        sleep 1
        cd /opt/src && rm -rf ./$1

}

_post_php(){
        grep -q httpd /etc/passwd || useradd -u2000 -s /sbin/nologin httpd
        mkdir /opt/logs/php7.1/ -p && chown httpd. /opt/logs/php7.1/ -R
        wget -cP ${soft_dir}/etc/ http://${down_ip}/conf_all/php7.1/php.ini
        wget -cP ${soft_dir}/etc/ http://${down_ip}/conf_all/php7.1/cron.ini
        wget -cP ${soft_dir}/etc/ http://${down_ip}/conf_all/php7.1/php-fpm.conf

#       grep -q "php7.1/sbin/php-fpm" /etc/rc.local || echo "${soft_dir}/sbin/php-fpm" >> /etc/rc.local
}


_ext_install(){
        exts=(
        amqp-1.9.1
        apcu-5.1.8
        inotify-2.0.0
        mongodb-1.3.0
        redis-3.1.4
        tideways-master
        yac-2.0.2
        )
        ext_config="./configure --with-php-config=${soft_dir}/bin/php-config"
        yum install librabbitmq-devel libnghttp2-devel -y

        for hi in hiredis-master;do
                wget http://${down_ip}/php_ext/${hi}.tgz -cP /opt/src/php_ext
                cd /opt/src/php_ext && tar xvf ${hi}.tgz && cd ${hi} && make && make install && ln -sv /usr/local/lib/libhiredis.so.0.13 /usr/lib64/
        done

        for swoole in swoole-1.9.21;do
                wget http://${down_ip}/php_ext/${swoole}.tgz -cP /opt/src/php_ext
                cd /opt/src/php_ext && tar xvf ${swoole}.tgz && cd ${swoole} && ${soft_dir}/bin/phpize && ${ext_config} --enable-openssl --enable-http2 --enable-async-redis  --enable-sockets --enable-swoole && make && make install
        done


        for i in ${exts[@]};do
                wget http://${down_ip}/php_ext/$i.tgz -cP /opt/src/php_ext
                cd /opt/src/php_ext && tar xvf $i.tgz && cd $i && ${soft_dir}/bin/phpize && ${ext_config} && make && make install
                ls -l ${soft_dir}/lib/php/extensions/no-debug-non-zts-20160303/
        done

}

_main(){
        yum -y install cmake gcc-c++ epel-release
        mkdir /opt/src -p
        for i in ${parkage[@]};do
                [[ ! -d ${soft_dir} ]] && if_exist $i && php_install $i
                result_check $i
                _post_php && _ext_install
        done

}

_main

九、为php 添加stomp 扩展

介绍:This extension allows php applications to communicate with any Stomp compliant Message Brokers through easy object oriented and procedural interfaces.    
http://pecl.php.net/get/stomp-2.0.1.tgz
php7 
#wget http://pecl.php.net/get/stomp-2.0.1.tgz
#cd stomp-2.0.1
#/opt/app/php7/bin/phpize 
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-stomp
# ll /opt/app/php7/lib/php/extensions/no-debug-non-zts-20151012/
-rwxr-xr-x 1 root root  179275 Dec 18 16:42 stomp.so
#vi /opt/app/php7/etc/php.ini 
[stomp]
extension = sto
重启
#kill -usr2 `cat /opt/app/php7/var/run/php-fpm.pid`
#/opt/app/php7/bin/php -m

用stomp-2.0.1.tgz 来为php5 添加扩展,make的时候报错,猜测是版本太高,于是下载
stomp-1.0.8.tgz 来为php5 添加扩展,就不会有问题了!!!

十、为php7.1 安装intl扩展和imagick

1、安装intl扩展
#cd /opt/src/php-7.1.10/ext/intl
#/opt/app/php7.1/bin/phpize
#yum install libicu-devel -y
#./configure --with-php-config=/opt/app/php7.1/bin/php-config
#make
#make install

2、安装imagick扩展
说明:
imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API
由于安装imagick扩展时需要依赖ImageMagick的函数库,因此必须要先安装ImageMagick 

官方文档:
First of all download a tar image of the ImageMagick install from here:
sourceforge.net/projects/imagemagick/files/
Unpack it and then from terminal issue the following commands in
quotes:
步骤
1.#cd ImageMagick-6.5.7  
2.#./configure --prefix=/opt/app/imagemagick
3.#make  && make install

First of all we need to get the right file and we can get that from here:
pecl.php.net/package/imagick/download
At current writing the latest stable version is imagick-2.3.0.
Unpack the tar file and then enter the commands in quotes in terminal:
1.#cd imagick-2.2.3
2.#/opt/app/php7.1/bin/phpize
3.#./configure --with-php-config=/opt/app/php7.1/bin/php-config --with-imagick=/opt/app/imagemagick
5.#make && make install
注意:如果make报错,可以执行
export PKG_CONFIG_PATH=/opt/app/imagemagick/lib/pkgconfig
然后重新configure
学习链接:https://www.cnblogs.com/kevingrace/p/5947695.html

修改php7.1 配置文件
#vi cron.ini 
extension = intl.so
extension = imagick.so
#vi php.ini
extension = intl.so
extension = imagick.so

十一、为php5 添加ssh2模块和 为php7 添加soap模块

#tar xf ssh2-0.13.tgz
#cd ssh2-0.13
#/opt/app/php5/bin/phpize 
#./configure --with-php-config=/opt/app/php5/bin/php-config
make
make install 

将模块添加到php.ini  和 cron.ini 重启php5 即可

#cd /opt/src/php-7.0.12/ext/soap
#/opt/app/php7/bin/phpize
#./configure --with-php-config=/opt/app/php7/bin/php-config --enable-soap
#make
#make install

将模块添加到php.ini 和 cron.ini 重启php7 即可

十二、为php7添加imap扩展

yum install libc-client-devel  -y
#cd php-7.0.12/ext/imap/
#/opt/app/php7/bin/phpize 
#./configure --with-php-config=/opt/app/php7/bin/php-config  --with-imap --with-imap-ssl --with-kerberos
#make  && make install
添加到配置文件php.ini

十三、gd扩展支持jgeg

#cd php-7.x.x/ext/gd
#/opt/app/php7.4/bin/phpize
#yum install libjpeg libjpeg-devel freetype freetype-devel -y
#./configure --with-freetype --with-jpeg --with-php-config=/opt/app/php7.4/bin/php-config 
#make && make install


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部