Microsoft Azure网站允许客户启用自定义PHP扩展模块。Microsoft Azure网站的PHP默认启用了很多常用PHP扩展模块。具体的信息可以参考phpinfo()输出结果的EXTENSION部分。很多情况下,您的应用需要自定义的扩展模块,比如使用PHP Mongo DB扩展模块连接Mongo DB;比如需要启用XDebug调试扩展模块。Microsoft Azure网站提供了一个非常方便的方式来启用自定义扩展。

Microsoft Azure网站支持两种PHP扩展:PHP扩展模块和ZEND扩展模块。下面我们分别介绍如何启用这两种扩展模块。

启用PHP扩展模块

下面我们以Mongo DB PHP扩展模块和APC(Alternative PHP Cache)为例演示如何启用PHP扩展模块。示例网站PHP版本为5.4,32位。
1. 下载适用于PHP 5.4的非线程安全(NTS)Mongo DB PHP扩展模块
http://pecl.php.net/package/mongo
2. 下载适用于PHP 5.4的非线程安全(NTS)APC扩展模块
http://pecl.php.net/package/APC/3.1.13/windows
3. 将php_apc.dll和php_mongo.dll上传至网站的/wwwroot/bin目录下
4. 配置PHP扩展模块
a)登录到Microsoft Azure管理门户网站,选择要配置的网站,在网站配置页面,定位到应用设置部分。
b) 如下图所示,在左边输入PHP_EXTENSIONS,在右侧输入Mongo DB和APC扩展模块的路径,多个文件中间用逗号隔开。在本例中,路径为:d:\home\site\wwwroot\bin\php_mongo.dll,d:\home\site\wwwroot\bin\php_apc.dll

php extension

5. 您可以通过phpinfo()函数来验证修改。比如创建一个phpinfo.php包含如下内容,并将该文件上传到您的网站根目录。

6. 如下图所示,Mongo DB和APC扩展已经被启用。
verify php extension

启用ZEND扩展模块

下面我们以XDebug扩展模块为例,演示如何启用ZEND扩展模块。
1. 下载非线程安全的PHP XDebug扩展模块
您可以从下面的网站下载相应版本的PHP XDebug扩展模块(非线程安全版本)。比如,如果您的站,点使用32位PHP 5.5,那么,您需要下载适用于PHP5.5的XDebug 2.2.4 X86版本,对应的文件名称为php_xdebug-2.2.4-5.5-vc11-nts.dll
http://xdebug.org/download.php
2. 使用FTP将该DLL上传至网站,比如/site/wwwroot/bin/XDebug目录,它对应的物理路径为d:\home\site\wwwroot\bin\XDebug
3. 配置ZEND扩展模块
a) 登录到Microsoft Azure管理门户网站,选择要配置的网站,在网站配置页面,定位到应用设置部分。
b) 如下图所示,在左侧输入PHP_ZENDEXTENSIONS,右侧输入模块对应的文件的路径。

php zend version

4. 您可以通过phpinfo()函数来验证修改。比如创建一个phpinfo.php包含如下内容,并将该文件上传到您的网站根目录。如下图所示,XDebug已经被启用。

php xdebug version

加载PHP扩展模块注意事项

1. 指定正确的扩展模块类型。如果是PHP扩展模块,则需要指定PHP_EXTENSIONS,如果是ZEND扩展模块,则需要指定PHP_ZENDEXTENSIONS。
2. 配置正确的版本。比如您的网站使用的是PHP 5.4,则您在配置PHP扩展模块时,要确保该模块支持PHP 5.4。如果您的网站使用的是64位PHP,您需要配置64为的扩展模块。
3. 如果PHP扩展模块依赖与其它的模块,请同时上传这些模块。时刻牢记Azure网站环境只是一个干净安装的Windows系统,不包含任何其它的模块。
4. Microsoft Azure网站支持同时启用多个扩展模块。要启用多个扩展模块,同时指定多个扩展模块文件名,用逗号分隔。比如:
Bin\PHP_XDebug.dll,bin\PHP_Mongodb.dll
5. PHP扩展模块必须和PHP运行时采用相同的编译环境,否则PHP无法加载扩展模块。您可能在PHP的错误日志中看到下面的错误:

[04-Mar-2015 07:07:18 UTC] PHP Warning: PHP Startup: catchit: Unable to initialize module
Module compiled with build ID=API20131226,NTS,debug,VC12
PHP compiled with build ID=API20131226,NTS,VC11
These options need to match
in Unknown on line 0

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注