【问题标题】:PHP API not matchingPHP API 不匹配
【发布时间】:2013-08-26 07:43:27
【问题描述】:

我需要启用安装在我的系统上的模块。几个月前我从 ondrej 的存储库中安装了 PHP 5.4,现在我已经从源代码编译了 ODBTP 模块。

不幸的是,如果我启用这个模块,我会收到一个错误,导致所有 PHP 脚本失败:

PHP Warning:  PHP Startup: odbtp: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match
 in Unknown on line 0

我想我明白它想告诉我什么,我想从源代码编译 PHP,以便它有匹配的 API 版本,但是我找不到我的 PHP 版本的源代码...

如果您需要更多详细信息,我很乐意提供。

【问题讨论】:

  • 如果你设法编译模块,那么你已经安装了类似 php5-dev 的东西。为什么你安装了不同的 php5 和 php5-dev 版本?为什么不升级dev或降级php5?
  • 因为我无法在 5.4.17 版本中获取 php5-dev 包我无法将 php5 包降级到与 php5-dev 版本匹配的 4.3 版本,因为我非常需要对 pdo-dblib 的支持这是 php 5.3 中的错误
  • 好的,我已经成功安装了和我的 php.ini 版本相同的 php5-dev。我已经重新编译了扩展,但仍然 - 我收到了同样的错误......看起来旧版本仍然链接在系统上的某个地方。

标签: ubuntu-10.04 php-5.4


【解决方案1】:
  1. 杀死 ondrej 在/etc/apt/sources.list 或任何位置的存储库。
  2. purge你的 PHP 安装
  3. php.net 下载您需要的 PHP 版本,或者从 5.4.x (5.4.19) 下载最新版本
  4. 编译它并支持您需要的所有模块

您的 Ubuntu 不再受支持,因此除了从源代码编译外,您没有太多其他选择。如果它是服务器,则步骤应该相反。 :D

@khartvin 将该服务器更新到 12.04 也会带来很大的风险,并且可能会破坏事情。操作系统版本之间的东西变化 - 很多,尤其是 Ubuntu! 有时,Canonical 的配置管理并不好。

如果要更新最好在版本之间跳转:

10.04 updt-> 10.10 updt-> 11.04 updt-> 11.10 updt-> 12.04

它仍然可能失败,所以这不是一个解决方案。

在服务器上从源代码编译并不意味着整个编译过程都需要停机 - 您不需要在当前安装过程中进行编译。您可以编译到其他目录,然后切换网络服务器设置。

此时您最好的选择是将服务器作为一个整体进行迁移。因此,将此传达给您的客户。这是您搬迁通常需要做的事情: (这很大程度上取决于您的设置,这只是一个普通的单服务器示例)

  • 准备新机器:SELinux、语言环境、用户/组、Apache 等
  • 根据需要安装和配置 php
  • 安装数据库,复制信息,准备在 DNS 切换前再次复制
  • 如果您有 SSL,您还必须管理它
  • 让您的 Web 应用程序在新机器上运行
  • 其他人对其进行测试以验证一切正常
  • 在您的用户所在时区的某个深夜:停止 Web 应用程序,复制数据库,更改 dns 记录以指向新服务器,然后在大约 10 分钟到最多 2 小时内,您的用户将在新服务器上。

DNS 记录的刷新时间取决于您的提供商 - 在大多数情况下,它几乎立即发生。

【讨论】:

  • 是的,这是我的第一个想法。不幸的是,这是客户的生产服务器。它无法清除 PHP 安装 + 即使我在他们背后清除了它 - 我很害怕在从源代码安装 PHP 后构建整个依赖树...我只是希望我可以将该服务器更新到 12.04... :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多