【问题标题】:PHP Warning: Unable to load dynamic libraryPHP 警告:无法加载动态库
【发布时间】:2011-09-25 07:04:38
【问题描述】:

好的,我有 PHP 在我的 mac os x Apache 2 服务器上运行。 我遇到的问题是它似乎找不到允许我连接到 sqlite 数据库的扩展。

extension = php_sqlite.dll
extension = php_pdo_sqlite.dll
extension = php_sqlite3.dll

现在我收到了这个错误,因为我取消了这些扩展的注释..

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/php_sqlite3.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/php_sqlite3.dll, 9): image not found in Unknown on line 0

这三个都是同样的错误。
现在我在互联网上的不同地方阅读过,可能是它们没有安装在我的 mac 上,但我找不到 PHP 目录或它们所在的任何地方!
我对此很陌生,所以任何帮助都会很重要 迪斯科

【问题讨论】:

  • .dll 文件适用于 Windows。在 Mac 上它会是别的东西(.so?)
  • 为什么mac自带的php.ini文件里有.dll。真的不会打喷嚏。将尝试将其更改为 .so。
  • 因为 php 是多平台的,并且包含大多数的示例?
  • 好吧,即使它们已经使用下面的@Francois 方法安装到正确的位置,它仍然找不到它们。仍然得到与上面相同的错误!请帮忙
  • 我不确定它是否适用于你,但对我来说 pdo_sqlite 和 pdo_mysql 已经以某种方式启用了。它警告我它们被重复启用,所以我只是不加注释。

标签: php apache sqlite apache2 php-extension


【解决方案1】:

您启用的 DLL 扩展实际上适用于 Windows。在 Mac 和其他 *nix 平台上,它们实际上是 SO 文件。

我在 Mac 上,似乎 SQLite 模块已经加载。您应该能够在 php.ini 文件中注释掉这些行,重新启动 Apache 并使用 SQLite,而无需执行任何操作。从我记事起,SQLite 模块就已经包含在内了。

如果确实不包含,则必须从源代码编译模块。这需要您安装Apple Developer Tools

从头开始编译(从命令行):

  1. Download the PHP's source code。您需要下载与系统上已安装的版本相匹配的版本。要了解您使用的是哪一个,请在命令行中输入 php -v
  2. 使用tar -zxvf 后跟文件名提取您下载的存档。
  3. 键入cd php-5.3.x/ext/sqlite3/(其中“5.3.x”应替换为您的版本号,“sqlite3”可以是您要从上面的列表中安装的任何模块减去“php_”前缀)。
  4. 输入phpize
  5. 输入./configure
  6. 输入make
  7. 输入sudo make install
  8. extension=sqlite3.so 添加到您的php.ini(如果您编译其他扩展,请再次确保将 sqlite3.so 替换为其他扩展的名称)。

最后,重启 Apache,你应该就完成了。

【讨论】:

  • 好的,我找到了所有扩展的位置,但那里只有一个。已经完成了你所说的在输入 phpize 时卡住了。我明白了.....确保在模块的顶级源目录中运行 usr/bin/phpize'
  • 发现问题在于寻找一个名为 config.m4 的文件,但 iv 只得到了 config0.m4?
  • pdo_sqlite 和 sqlite 包含 config.m4 但 sqlite3 没有?我需要 sqlite 3 吗?
  • @Disco S2 - 我已经完成了我在上面发布的内容,但是对于 OS X 的 PHP 不附带的 pcntl(进程分叉)。我不使用 SQLite,所以我不确定配置文件。刚刚检查了我的安装,发现已经安装好了,分享了我之前使用的步骤。
  • 好的,对于遇到此问题的每个人来说,这就是我要解决的问题。 @amphetmachine 是对的,.dll 适用于 Windows,所以我们正在寻找 .so 扩展名。上述解决方案非常适合我们需要做的事情。按照答案,它将安装它。但是,当您这样做时,您需要返回到 php.ini 文件并注释掉扩展名,因为它会在错误文件中显示类似“此扩展名已安装”的内容
【解决方案2】:

打开 php.ini。查找定义扩展位置的行。在我的情况下(Windows 机器),它是这样的:

extension_dir = "C:\xampp\php\ext"

这将为您提供所有扩展程序所在的位置。打开它并检查您的 SQLite 扩展是否确实存在。

另外,请确保您的扩展程序实际上适用于 Mac 计算机。它们的文件扩展名应该是“dylib”或者可能是“so”(不确定 - 我没有 Mac),而“dll”是 Windows 特定的动态库文件扩展名 (AFAIK)。

【讨论】:

    【解决方案3】:

    尝试删除然后重新安装软件包:

    brew rm mcrypt
    brew install mcrypt
    

    【讨论】:

      猜你喜欢
      • 2021-08-27
      相关资源
      最近更新 更多