问题描述
我有一个简单的网站托管在共享的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 =行。真痛苦。 。