php连接不上redis

一叶舟troy 发布于 2015/08/27 14:13
阅读 1K+
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

https://github.com/phpredis/phpredis
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make install
extension_dir = "/usr/lib64/php/modules/"  
extension= /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so

重启httd

结果为啥不显示phpinfo中reids已经ok了呢

加载中
0
Null--Null
Null--Null
make && make install 
0
mickelfeng
mickelfeng

php加载模块中的代码:

        if (extension_dir && extension_dir[0]){
                int extension_dir_len = strlen(extension_dir);
 
                if (type == MODULE_TEMPORARY) {
                        if (strchr(Z_STRVAL_P(file), '/') != NULL || strchr(Z_STRVAL_P(file), DEFAULT_SLASH) != NULL) {
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Temporary module name should contain only filename");
                                RETURN_FALSE;
                        }
                }
 
                if (IS_SLASH(extension_dir[extension_dir_len-1])) {
                        spprintf(&libpath, 0, "%s%s", extension_dir, Z_STRVAL_P(file));
                } else {
                        spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, Z_STRVAL_P(file));
                }
        } else {
                libpath = estrndup(Z_STRVAL_P(file), Z_STRLEN_P(file));
        }
 
        /* load dynamic symbol */
        handle = DL_LOAD(libpath);

所以php加载的扩展是:

如果extension_dir不存在(未设置)直接加载extension,

如果extension_dir存在(设置了)就是extension_dir+extension  .

你看你路径写对了吗?

http://www.laruence.com/2009/06/14/945.html

一叶舟troy
一叶舟troy
/usr/local/php/bin/php-config --extension-dir /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226 [wang@localhost ~]$ cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226 没问题
hylent
hylent
前提是 extension提供的是相对路径
0
lonyis
lonyis

.......

phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make


cp modules/X.so /your/php/modules/




0
hylent
hylent
extension_dir = "/usr/lib64/php/modules/"  
extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so


这两个配置项明显最多只有一个是对的。

如果extension_dir 是正确的,那么只需再次配置 extension=redis.so 即可,不用提供完整的路径。

另外,也可以不去理会extension_dir这个配置项。直接使用 extension=/full/path/to/redis.so的形式进行配置。

上面的 /full/path/to 具体是在哪里,可以通过 /usr/local/php/bin/php-config --extension-dir 获知。

0
mickelfeng
mickelfeng

这样配置:

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20131226/"  
extension= redis.so


或者:
extension_dir = ""  
extension= /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so

0
一叶舟troy
一叶舟troy

引用来自“mickelfeng”的评论

这样配置:

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20131226/"  
extension= redis.so


或者:
extension_dir = ""  
extension= /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so

结果还是不行,可能是我环境问题 彩乃了
0
一叶舟troy
一叶舟troy
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

extension=redis.so

ok

返回顶部
顶部