我在运行 64 位系统的 Windows 7 操作系统上使用 Apache 2.2 服务器和 PHP 5.3.6。
启动 Apache 服务器时,此错误出现在 Apache 错误日志中 -
PHP 警告:PHP 启动:无法加载动态库“D:\php5\ext\php_curl.dll”- 在第 0 行的未知位置找不到指定的模块。\r\n
以下是 php.ini 文件中提到的其他扩展 -
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_xsl.dll
extension=php_memcache.dll
回显phpinfo()
没有显示 curl 扩展已加载,但是其他扩展已加载。
但是该php_curl.dll
文件与其他文件一起存在于正确的位置 - D:\php5\ext\php_curl.dll
phpinfo()
表明
extension_dir = D:\php5\ext
所以,这也是正确的。
更多细节
我是这个团队的新成员,我已经在这个 Windows 7 系统上分别设置了 Apache 和 PHP,一切都运行正常。
我们的项目需要大量 httpd conf 更改,因此我被要求用团队的当前版本覆盖 httpd conf 文件。我做了同样的事情,只是更改了 ServerName、ServerAdmin 等。我还复制了他们的 PHP 安装目录。
除此扩展之外的一切都运行良好。
答案1
原因很可能是缺少一些必要的 dll 文件。查看我的其他问题修改 Apache 配置后 Apache 启动失败,显示语法错误,无法将 php5apache2_2.dll 加载到服务器中在遇到一些类似的疯狂错误后,我将其放在了后面。我在那里描述了解决方案。
答案2
PHP 警告:PHP 启动:无法加载动态库“…\php-5.6.9\ext\php_curl.dll”
在 Windows Server Core 2012 x64 上使用 PHP 5.6.9 时,cURL 无法正常工作,尽管我在 php.ini 中取消注释了 php_curl.dll 扩展并重新启动了 Apache 2.4 服务,但 phpinfo 中仍未显示。将 php 路径和 php\ext 路径添加到我的 $evn:path。毫无进展。
修复:我不需要下载任何其他 php_curl.dll 文件,而且无论如何都找不到适用于 PHP 5.6 的文件。最终有效的方法是复制这些三文件放入 Apache24\bin 文件夹然后重新启动 Apache:
libeay32.dll
libssh2.dll
ssleay32.dll
不需要将这些复制到 System 或 System32。
答案3
确保该文件未损坏且运行 apache 的用户可以读取。
答案4
仅将 libssh2.dll 从 php 目录复制到 apache/bin 目录(以解决 php_curl.dll 的问题)