2015-07-21 54 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版本? –