Strawberry Perl libeay32_.dll 问题

Strawberry Perl libeay32_.dll 问题

我已经在 32 位 Windows Server 2008 上安装了 Strawberry Perl (v5.12.3),并且希望运行 simpledb CLI 工具。

我有一个小HOME 环境变量问题,我将其重命名为 HOMEPATH 来解决问题,但是当我尝试运行时,我得到了:

This application has failed to start because libeay32_.dll was not
found. Re-installing the application may fix this problem.

有人知道如何解决这个问题吗?这是 Strawberry Perl 的问题吗?

答案1

我在使用 Windows Server 2003、strawberry 和 Bugzilla 时也遇到了同样的问题。每当系统告诉我找不到 dll 时,我的“解决方案”就是将丢失的 .dll 文件复制到 c:\windows\system32。丢失的 .dll 文件都在该路径中。之前我尝试将它们复制到 perl.exe 所在的目录和其他地方,但都不起作用。唯一的例外是 libmysql_.dll 文件,将其复制到 /strawberry/perl/vendor/lib/auto/DBD/mysql 目录时可以正常工作。

希望有人能找到真正的问题并/或解决这个问题。

答案2

我已通过删除 Windows 环境变量中的 perl 路径语句来更正此问题。它们位于旧安装的字符串开头。草莓安装在末尾添加了自己的路径语句。这允许新的草莓安装以正确的顺序搜索路径。

答案3

我在尝试使用通过 Apache 和 mod_cgi 移植的 Strawberry Perl 运行 Bugzilla 时遇到了同样的问题。解决方案是为 perl 设置适当的环境,就像通过 mod_cgi 调用一样。

如果您使用的是便携式 Strawberry Perl(或者即使您没有使用,也值得尝试此修复),请将其添加到您的httpd.conf(如果使用 Apache - 如果不是,请查看您的 Web 服务器如何为 cgi 进程设置环境变量):

Define PERLPATH "C:\path\to\perl"
SetEnv PATH "${PERLPATH}\perl\site\bin;${PERLPATH}\perl\bin;${PERLPATH}\c\bin"
SetEnv TERM ""
SetEnv PERL_JSON_BACKEND ""
SetEnv PERL_YAML_BACKEND ""
SetEnv PERL5LIB ""
SetEnv PERL5OPT ""
SetEnv PERL_MM_OPT ""
SetEnv PERL_MB_OPT ""

我把它们放在<Directory>相关的位置,而不是全局的,但您的设置可能有所不同。

我从中获得了这些portableshell.bat,它们与便携式发行版捆绑在一起,如果您有其他安装(甚至根本没有安装),这是运行它的唯一正确方法。

尽管 Bugzilla 的代码在污点模式下运行(因此应该忽略环境),但情况似乎并非完全如此,可能是因为被抱怨的内容libeay32_.dll被称为经过脚本,而不是实际的主脚本本身。

答案4

如果您正在使用 strawberry perl 并且从另一台机器复制了安装目录,只需执行update_env.pl.bat(在 straberry 目录中找到)并重新启动您的电脑。

相关内容