我正在使用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"
我该如何解决这个问题?
答案 0 :(得分:3)
我认为可能的罪魁祸首(正如我在电子邮件中回答的那样)是你从配置文件中的某处加载了json扩展名。
JSON扩展在PHP 5.4的核心中编译,因此您不应手动加载它。
请检查您没有:
json.ini
从之前的PHP 5.5安装遗留下来的/etc/php5/{mods-available}
中的某处
您没有从上述脚本加载JSON扩展名,例如没有dl(json.so
)。
确保在更改主要版本时已停止并启动Apache2(同样适用于php5-fpm
)。这些症状可能表明在加载的软件包中存在一些与之前的PHP相关的Apache2线程(在这种情况下,这将是基于json-c
的基于JSON扩展的PHP 5.5。)
答案 1 :(得分:0)
因为您说json扩展名已加载到phpinfo()
的输出中,所以您可能正在处理错误。您是否检查过模块文件是否实际存在于文件系统中?
您有以下选择:
有关详细信息,请查看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),但可能有助于跟踪其根本原因: