我在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.php
,php -d extension=%~dp0php_redis.dll -f postdeploy.php
和其他奇怪的组合而没有运气。
答案 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。
一般而言:
PHP_INI_SCAN_DIR
和值d:\home\site\ini
d:\home\site\ini
extensions.ini
中创建配置文件
extensions.ini
文件
您将在php.ini文件中使用的语法。例如:extension =
php_redis.dll。通过这种方法,您可以将PHP扩展配置为Kudu控制台站点的PHP运行时。通过App Settings
进行配置只会将扩展配置为IIS。
如有任何疑问,请随时告诉我。