我在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行
我错过了什么?
答案 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上启用扩展。 请参阅我的网站文件夹结构:
我将DLL文件复制到名为ext
的文件夹中。 那些dll'版本应该是VC9和非线程安全(nts)兼容。
我在文件夹名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门户上的配置面板:
它对我有用。
答案 2 :(得分:0)
有类似的问题。确保 redis dll 文件存在并在 php.ini 中启用,同时确保 redis 文件夹具有完全写入权限。