【问题标题】:"Specified procedure could not be found" error while configuring Apache配置 Apache 时出现“找不到指定的过程”错误
【发布时间】:2014-02-26 09:04:23
【问题描述】:

我尝试为 localhost 配置 Apache 2.4.2,以便它可以与 PHP 和 PostgreSQL 一起使用。我在 httpd.conf 文件的末尾添加了以下代码(在@Galadai 的回答之后更新):

PHPIniDir "D:/Programy/php"

LoadFile "D:/Programy/php/php5ts.dll"
LoadFile "D:/Gis/PostgreSQL/9.3/bin/libpq.dll"

LoadModule php5_module "D:/Programy/php/php5apache2_4.dll"

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

尝试启动 Apache 会返回错误。当我运行“测试配置”时,它显示以下错误消息:

httpd.exe: Syntax error on line 519 of D:/Programy/Apache/httpd.conf: Cannot load D:/Programy/php/php5ts.dll into server: Specified procedure could not be found.

我之前遇到了一些路径问题,错误信息几乎相同,只是有“模块”而不是“过程”。我发现了很多关于“模块”版本的提示,但他们的解决方案通常是确保路径是否合适(我这样做了),两个版本都是 32/64 位(都是 32 位)并且 PHP 是线程安全的(这是)。我没有找到任何提示如何解决错误的“程序”版本。我以为可能是版本不同造成的(我之前尝试过 Apache 2.2),但事实证明这是错误的。

编辑:现在我在文档的其余部分结束之前添加了 PHPIniDir 和第一个 LoadFile,唯一的区别是现在问题也出现在 php5ts.dll 上。路径是正确的(如果不存在会是“模块”,而不是“程序”问题 - 再次测试)。

还有什么想法吗?

我的 PHP 是 5.5.9(线程安全)和 PostgreSQL 9.3,我的系统是 Windows XP 32 位。

EDIT2:通过 EnterpriseDB LAPP 的解决方法不如我第一次想的那么好,所以我仍在寻找这个问题的答案。

【问题讨论】:

  • 同样的问题:httpd.exe:D:/xampp/apache/conf/httpd.conf 第 514 行的语法错误:D:/xampp/apache/conf/extra 第 17 行的语法错误/httpd-xampp.conf: Cannot load D:/xampp/php/php5ts.dll into server: 找不到指定的模块。

标签: php apache postgresql


【解决方案1】:

根据php.net manual

httpd.conf 应该如下所示:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "c:/PHP/"
Loadfile "C:\php\php5ts.dll"
Loadfile "C:\php\libpq.dll"
LoadModule php5_module "c:/PHP/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps

【讨论】:

  • 我试过这个,但没有用。我猜 apache 需要在实际加载 PHP DLL 模块之前加载一些 DLL。
【解决方案2】:

我遇到了类似的问题。 PHP 模块无法加载到我的 Apache 安装中。

我使用了来自https://www.apachehaus.com/cgi-bin/download.plx 的 Apache 2.4.52 的 Windows x64 发行版 和 PHP 版本 8.1.2 x64,线程安全来自 https://windows.php.net/download#php-8.1

在./conf/httpd.conf里面配置好php扩展配置后, 运行 ./bin/httpd.exe 后,返回错误: Cannot load C:/Program Files/Applications/php_8_1_2_x64/php8apache2_4.dll into server: The specified procedure could not be found.

解决方案:下载一个使用 OpenSSL 库构建的 apache 版本,因为 PHP 需要这个。 LibreSSL 不起作用。

PHP模块想内部调用该模块的函数,但是执行系统找不到被调用的函数(过程)并报错。

用包含正确二进制文件的文件夹替换 Apache 服务器文件夹中的 bin 目录应该可以,但我不知道到什么程度。最好只设置一个新安装并迁移配置和数据文件。

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多