PHP:更新PHP版本后缺少JSON支持

问题描述

我有一个简单的网站托管在共享的Linux服务器上(由徽标是鳄鱼皮的公司提供)。认的PHP版本是5.6.30。服务器的面板提供了一个名为MultiPHP Manager的页面,该页面使我可以将网站更新为PHP 7.x(无论是7.0、7.2、7.3还是7.4,都会出现相同的问题)。

更新到7.x后,当我通过Web服务器(我认为是CGI)运行PHP时,似乎缺少了JSON JSON模块(在PHPinfo()中未报告),但是在外壳层支持JSON

我制作了这个测试文件

<?PHP
if (function_exists('json_decode')) {
    echo "JSON enabled";
}
else echo "JSON NOT enabled";

如果我得到一个带有ssh的bash shell并运行PHP json.PHP,它就会工作(表示启用)。但是,如果我通过web服务器在public_html中运行此文件,则会恢复为禁用状态。

对托管服务的技术支持一直没有用。

解决方法

好吧,我相信我已经弄清楚了。

此主机使用suPHP运行PHP。默认情况下,suPHP不会在public_html或主目录中查找php.ini文件。因此,您需要将这些行添加到public_html中的.htaccess文件中:

<IfModule mod_suphp.c>
  suPHP_ConfigPath /home/username/public_html
  <Files php.ini>
    order allow,deny
    deny from all
  </Files>
</IfModule>

就位后,您可以将此行添加到public_html文件夹中的php.ini文件中:

extension=json.so

当然,如果需要其他模块,则还必须为其添加extension =行。真痛苦。 。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...