0

我使用的是 Ubuntu 12.04 LTS 并且需要 PHP 5.4,所以我使用的是Ondřej Surý 的(php5-oldstable)包。

phpinfo 和 CLI 都显示 JSON 已启用:

#php -i | grep -i json
json
json support => enabled
json version => 1.2.1

我的应用程序大部分都有效。但是周期性地(大约十页刷新一页)有一个 PHP 错误。这只是间歇性地发生。

 PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/json.so'
 - /usr/lib/php5/20100525+lfs/json.so: cannot open shared object file: 
 No such file or directory "json.so"

我该如何解决?

4

3 回答 3

3

我认为可能的罪魁祸首(正如我在电子邮件中回答的那样)是您正在从配置文件的某处加载 json 扩展。

JSON 扩展是在 PHP 5.4 的核心中编译的,因此您不应手动加载它。

请检查您是否没有:

  1. json.ini/etc/php5/{mods-available}以前的 PHP 5.5 安装遗留的某处

  2. 您没有从上述脚本加载 JSON 扩展,例如没有 dl( json.so)。

  3. php5-fpm确保您在更改主要版本时已经停止并启动了 Apache2(同样适用于)。症状可能表明有一些卡住的 Apache2 线程与以前的 PHP 从包加载(json-c在这种情况下是基于 JSON 扩展的 PHP 5.5)。

于 2013-09-17T08:05:12.023 回答
0

由于您说 json 扩展名已加载到phpinfo()的输出中,因此您可能正在处理一个错误。您是否检查过模块文件是否确实存在于文件系统中?

您有以下选择:

  1. 使用 Apache 2.4 从源代码编译 PHP 5.4
  2. 升级到相同的 repo 的稳定版本,它将为您提供 PHP 5.5 + Apache 2.4。
  3. 在 Ubuntu 的 PPA 中提交关于 Ondrej 的错误并等待它得到解决。

有关更多信息,请查看debphp 站点

提交错误是必须的,因为如果它是真实的,则必须为所有用户修复。如果您不与向后兼容性、不推荐使用的功能等迁移指南相冲突,您可以首先使用选项 2 。所以检查并决定。

它也因您必须使用的机器而有很大差异。如果它是关键的生产服务器,您可能不想在其上编译更改版本。去提交错误,看看包维护者对此有什么看法。

当您的问题解决后,请在这里写下回复。我很好奇它是什么,希望是。:D

于 2013-09-16T09:09:18.300 回答
0

一点不能诊断或解决问题(似乎是指 PHP 5.5),但可能有助于追踪其根本原因:

于 2013-09-16T10:59:09.410 回答