如何在Kudu控制台

时间:2016-04-27 16:39:29

标签: php azure phpredis kudu

我在Azure App Service上运行了一个webapp。我试图在Kudu Debug CMD控制台中测试Post部署脚本。

php -d extension=php_redis.dll -f postdeploy.php

这是我的postdeploy.php文件

<?php

ini_set('error_reporting', -1);
ini_set("display_errors", 1);

function exception_handler($exception) {
    echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');

$redis = new Redis();

...

?>

我收到以下错误

Fatal error: Class 'Redis' not found in D:\home\site\deployments\tools\PostDeploymentActions\postdeploy.php on line 13
PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\Program Files (x86)\PHP\v5.6\ext\php_redis.dll' - The specified module could not be found.
in Unknown on line 0

我将正确版本的php_redis.dll上传到PostDeploymentActions文件夹。这与webapp通过门户网站PHP_EXTENSIONS = bin\php_redis.dll中的应用设置使用的二进制文件相同。但是,我不知道如何为此脚本加载此内容。

有没有办法可以在Kudu post部署脚本中加载php_redis.dll?

我尝试了php -d extension=./php_redis.dll -f postdeploy.phpphp -d extension=%~dp0php_redis.dll -f postdeploy.php和其他奇怪的组合而没有运气。

1 个答案:

答案 0 :(得分:0)

请尝试通过 ini设置添加PHP扩展程序,请参阅Configure via ini settings部分的https://azure.microsoft.com/en-us/documentation/articles/web-sites-php-configure/#how-to-enable-extensions-in-the-default-php-runtime

一般而言:

  1. 使用密钥PHP_INI_SCAN_DIR和值d:\home\site\ini
  2. 将应用设置添加到您的网络应用中
  3. 在名为d:\home\site\ini
  4. extensions.ini中创建配置文件
  5. 使用相同的配置设置添加到extensions.ini文件 您将在php.ini文件中使用的语法。例如:extension = php_redis.dll。
  6. 重新启动Web Apps服务。
  7. 通过这种方法,您可以将PHP扩展配置为Kudu控制台站点的PHP运行时。通过App Settings进行配置只会将扩展配置为IIS。

    如有任何疑问,请随时告诉我。