2015-07-21 57 views
0

我在Azure上运行PHP 5.4托管的Web应用程序。管理会话处理我已经在Azure上配置了一个Redis缓存实例。找不到保存处理程序'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 

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

Warning: session_start(): Cannot find save handler 'redis' - session startup failed in D:\home\site\wwwroot\index.php(22) : eval()'d code on line 2

我错过了什么?

+0

我挖进PHP日志,发现这个错误: PHP警告:PHP启动:无法加载动态库'D:\ home \ site \ wwwroot \ bin \ php_redis.dll' - 指定的模块不能找到。 我已加载该DLL到该文件夹​​,我已经在我的php.ini文件中指定它。 – Ash

回答

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” Configurtation小组在Azure门户:

enter image description here

这对我的作品。

+0

谢谢你,最后的帖子让它工作!欢呼声 – Ash

+0

恭喜! :) –

0

其实,我在我的环境中尝试过PHPRedis扩展,它工作正常。

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

我跟着这些步骤:

1.开关到PHP version 5.4

2.Download PHPRedis扩展形式此page。 ,因为我用PHP的版本是version 5.4 TS,我下载phpredis_5.4_vc9_ts

3.After解压缩下载文件,请这些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.Create页面和测试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'); 
+0

仍然没有太多的运气,我把我的PHP设置为5.4,从链接下载了DLL。我将以下代码添加到我的ini文件中: extension = d:\ home \ site \ ext \ php_igbinary.dll extension = d:\ home \ site \ ext \ php_redis.dll session.save_handler = redis 会话。的save_path = “TCP://**.redis.cache.windows.net:6379 AUTH = **?” 但我仍然得到这些错误: PHP的警告:PHP启动:无法加载动态库' d:\ home \ site \ ext \ php_igbinary.dll' - 找不到指定的模块。 - 并为php_redis.dll文件 – Ash

+0

同样的错误,因为我也使用Azure的主机我的web应用程序,我需要我的PHP配置按:https://azure.microsoft.com/en-gb/documentation/articles/web-sites-php-configure/- 但我不相信这会有所作为 – Ash

+0

您是否使用过NTS版本? –