找不到保存处理程序' redis'

时间:2015-07-21 04:56:48

标签: php session azure redis

我在Azure上运行PHP 5.4托管的Web应用程序。为了管理会话处理,我在Azure上配置了一个Redis缓存实例。

我已设置会话保存路径&处理程序:

session.save_handler = redis
session.save_path = "tcp://kbcache.redis.cache.windows.net:6379?auth=***"

我还配置了Redis扩展程序:

PHP_EXTENSIONS  bin\php_igbinary.dll
APPSETTING_PHP_EXTENSIONS   bin\php_igbinary.dll
PHP_EXTENSIONS02    bin\php_redis.dll
APPSETTING_PHP_EXTENSIONS02 bin\php_redis.dll

然而,当我浏览我的网站时,我收到了消息:

  

警告:session_start():找不到保存处理程序' redis' - 会议   在D:\ home \ site \ wwwroot \ index.php(22)中启动失败:eval()' d代码   在第2行

我错过了什么?

3 个答案:

答案 0 :(得分:0)

实际上,我在我的环境中尝试了PHPRedis扩展,它工作正常。

形成您的描述,我认为您使Redis扩展的配置变得复杂。

我遵循了这些步骤:

1.切换到PHP version 5.4

2.从此page下载PHPRedis扩展表格。 由于我使用的PHP版本为version 5.4 TS,因此我下载了phpredis_5.4_vc9_ts

3.解压缩下载文件后,请将这些DLL文件复制到PHP ext文件夹中。看来你需要注意这一点。

将此代码添加到PHP.ini文件

extension=php_igbinary.dll
extension=php_redis.dll

session.save_handler = redis
session.save_path = "tcp://**.redis.cache.windows.net:6379?auth=**

4.创建一个页面并测试Redis代码:

$redis=new Redis();
$redis->pconnect('tcp://**.redis.cache.windows.net', 6379);
$redis->auth('**+**=');
$redis->set('key', 'hello '); 
$redis->append('key', 'world '); 
echo $redis->get('key');

答案 1 :(得分:0)

[更新帖子前]

部署PHP项目时,我们需要在Azure上启用扩展。 请参阅我的网站文件夹结构:

enter image description here

我将DLL文件复制到名为ext的文件夹中。 那些dll'版本应该是VC9和非线程安全(nts)兼容。

enter image description here

我在文件夹名extension.ini中创建了ini。内容如下:

extension=d:\home\site\ext\php_igbinary.dll
extension=d:\home\site\ext\php_redis.dll
zend_extension=d:\home\site\ext\php_xdebug-2.3.3-5.4-vc9-x86_64.dll
session.save_handler = redis
session.save_path = "tcp://**.redis.cache.windows.net:6379?auth=**

最后,我添加" PHP_INI_SCAN_DIR" Azure门户上的配置面板:

enter image description here

它对我有用。

答案 2 :(得分:0)

有类似的问题。确保 redis dll 文件存在并在 php.ini 中启用,同时确保 redis 文件夹具有完全写入权限。