PHP间歇性地无法加载json.so(Ubuntu 12.04 LTS上的PHP 5.4.19)

时间:2013-09-12 11:07:00

标签: php ubuntu-12.04 php-5.4

我正在使用Ubuntu 12.04 LTS并需要PHP 5.4,所以我使用 Ondřej Surý's (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"

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

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

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

请检查您没有:

  1. json.ini从之前的PHP 5.5安装遗留下来的/etc/php5/{mods-available}中的某处

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

  3. 确保在更改主要版本时已停止并启动Apache2(同样适用于php5-fpm)。这些症状可能表明在加载的软件包中存在一些与之前的PHP相关的Apache2线程(在这种情况下,这将是基于json-c的基于JSON扩展的PHP 5.5。)

答案 1 :(得分:0)

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

您有以下选择:

  1. 使用Apache 2.4从源代码编译PHP 5.4
  2. 升级到相同的repo's stable version,它将为您提供PHP 5.5 + Apache 2.4。
  3. Submit a bug在Ubuntu的PPA中使用Ondrej并等待它得到解决。
  4. 有关详细信息,请查看the debphp site

    提交错误是必须的,因为如果它是真实的,则必须为所有用户修复。 您可以先使用选项2 if you don't conflict with the Migration guidelines like backward compatibility, deprecated functions, etc.。检查并决定。

    根据您必须使用的机器,它也会有很大的不同。如果它是关键的生产服务器,您可能不希望在其上编译更改版本。去存档错误,看看包维护者对此有何看法。

    当问题得到解决时,请在此处写回复。我很好奇它是什么,希望是什么。 :d

答案 2 :(得分:0)

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