如何在 Kudu 控制台中运行部署后脚本时加载php_redis.dll


How to load php_redis.dll when running post deployment script in Kudu Console

我有一个在Azure App Service上运行的Webapp。我正在尝试在 Kudu 调试 CMD 控制台中测试部署后脚本。

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

这是我的部署后.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 文件夹。这与 Web 应用通过门户中的应用设置使用的二进制文件相同 PHP_EXTENSIONS = bin'php_redis.dll 。但是,我不确定如何为此脚本加载此脚本。

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

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

请尝试通过 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和值将应用设置添加到 Web 应用d:'home'site'ini
  2. d:'home'site'ini中创建一个名为 extensions.ini 的配置文件
  3. 使用相同的配置将配置设置添加到extensions.ini文件您将在 php.ini 文件中使用的语法。例如:扩展名 =php_redis.dll。
  4. 重新启动 Web 应用服务。

通过这种方法,您可以将 PHP 扩展配置到 Kudu 控制台站点的 PHP 运行时中。通过App Settings配置只会将扩展配置到 IIS 中。

如有任何进一步的问题,请随时告诉我。