【发布时间】:2011-06-09 05:08:57
【问题描述】:
我正在尝试在 Windows XP/IIS 5.1 开发机器上加载自定义 PHP 扩展,但失败得很惨。
我有……
- 将 PHP 扩展 (php_fortranwrapper.dll) 放在我的 PHP 5.3.5 安装的“ext”子文件夹中
- 一直在编辑正确的 php.ini 文件(即与 phpinfo() 输出中列出的“加载的配置文件”条目对应的那个)
- 在php.ini 中设置
extension_dir指向上述“ext”子文件夹 - 在 php.ini 中添加了
extension=php_fortranwrapper.dll条目以加载 PHP 扩展 - 重新启动 IIS(通过
iisreset)
在运行phpinfo() 脚本时,它会尝试加载页面,直到 FastCGI 超时并出现以下错误:
FastCGI 进程超出了配置的请求超时时间
如果我将 PHP 扩展名重命名为 php_fortranwrapper1.dll,我在逻辑上会看到以下错误:
PHP Startup: Unable to load dynamic library 'C:...\php-5.3.5\ext \php_fortranwrapper.dll' - 找不到指定的模块。
有关信息,我使用 PHP 5.3.5 和 PHP4Delphi 生成了 PHP 扩展,这是一个从 Delphi 源代码编译 PHP 扩展的工具。我的 Delphi 代码加载一个 Fortran DLL 并将一个整数传递给该 Fortran DLL 中的一个函数,并期望返回一个整数结果。
【问题讨论】:
-
您确定,这不是您要添加的
zend_extension? -
我不这么认为。 php.ini 文件包含一个名为“Dynamic Extensions”的部分,所有
extension=php_xxx.dll(例如extension=php_mysql.dll)语句都位于该部分,用于自动加载扩展。我读过的大多数关于构建自定义 PHP 扩展的教程都建议在本节中添加另一行以自动加载自定义扩展。 -
进行了一些研究(参见 web.archive.org/web/20080703225558rn_1/archive.devnewz.com/2002/…archived site),看来 zend_extensions 扩展了 Zend 引擎本身并且可以改变 PHP 的行为方式。我想要的只是要做的是向 PHP 添加功能。
-
尝试附加一个调试器看看发生了什么。
-
我已附加 Xdebug 并使用 XDebugClient 程序尝试调试此问题。烦人的是,Xdebug 从不连接到 XDebugClient,而 php_fortranwrapper.dll 包含在 php.ini 的扩展列表中 - XDebugClient 只是显示“等待 xdebug 连接”状态。 注意:我已经通过删除 php_fortranwrapper.dll 的扩展条目验证了 Xdebug 通常与 XDebugClient 对话。 有人对前进的道路有任何想法吗?
标签: php windows php-extension