调用未定义的函数json_encode - Ubuntu 14.04上的Drupal站点设置和phpbrew

时间:2016-06-20 09:38:22

标签: php json ubuntu

我是PHP / Apache世界的新手。按照Ubuntu 14.04上https://askubuntu.com/questions/550191/install-php-5-4-on-ubuntu-14-04-lts-without-compiling的说明安装phpbrew并切换到PHP版本5.3.29,因为我必须处理的应用程序是在此版本中开发的。我已将Apache Virtual Host和已修改的hosts文件配置为local.myapp.com加载我的应用程序。当我运行应用程序时,我收到以下错误:

  

致命错误:在第2563行的/var/www/myapp/myapp.main.drupal/includes/common.inc中调用未定义的函数json_encode()

我查看了https://github.com/phpbrew/phpbrew#variants,其中说我可以安装变体。设置Ubuntu,phpbrew,最后应用程序花了很长时间(对不起,我最近进入了PHP世界)。

我担心如果只使用phpbrew install 5.3.29 +json安装JSON变体,它会是一个全新的安装,我的所有设置都会被清除吗?

如果有一种方法我应该遵循安装JSON(如果我真的错过它)而不影响现有设置,请建议我!

谢谢。

修改

如果我理解正确,当我使用phpbrew安装PHP时由于某种原因它编译时没有JSON,我使用phpbrew install +default

编辑#2 我检查了phpbrew.variants文件。它显示JSON已启用。

  

/home/subrara/.phpbrew/php/php-5.3.29/phpbrew.variants   一个:3:{S:16: “enabled_variants”;一个:27:{S:4: “国际”; B:1; S:3: “XML”; B:1; S:6: “bcmath时”; b:1; S:3: “BZ2”; b:1; S:8: “日历”; b:1; S:3: “CLI”; b:1; S:5: “CTYPE”; b: 1,S:3: “DOM”; b:1; S:8: “FileInfo的”; b:1; S:6: “过滤器”; b:1; S:3: “IPC”; b:1; S:4: “JSON”; b:1; S:7: “mbregex”; b:1; S:8: “MBSTRING”; b:1; S:5: “mhash”; b:1; S: 6: “mcrypt的”; b:1; S:5: “PCNTL”; b:1; S:4: “PCRE”; b:1; S:3: “PDO”; b:1; S:4: “药业”; b:1; S:5: “POSIX”; b:1; S:8: “的ReadLine”; b:1; S:7: “套接字”; b:1; S:9:“标记生成器“; b:1; S:4:” 卷曲 “; b:1; S:7:为” OpenSSL “; b:1; S:3:” 拉链 “; b:1;} S:17:” disabled_variants” ;一个:0:{} S:13: “extra_options”;一个:0:{}}

但是,我在给予该文件夹的写入权限后再次继续安装扩展程序然后我得到了这个(对不起,它的长:():

  

subrara @ subrara-desktop:〜$ phpbrew ext install json stable

     

===>安装json扩展...

     

日志存储在:/home/subrara/.phpbrew/build/php-5.3.29/ext/json/build.log   将目录更改为/home/subrara/.phpbrew/build/php-5.3.29/ext/json

     

===>运行make clean:/ usr / bin / make -C'/home/subrara/.phpbrew/build/php-5.3.29/ext/json'-quiet'clean'

     

===> Phpize ...

     

===>配置...

     

===>建设中...

     

===>运行make all:/ usr / bin / make -C'/home/subrara/.phpbrew/build/php-5.3.29/ext/json''all'>> '/home/subrara/.phpbrew/build/php-5.3.29/ext/json/build.log'2>& 1

     

===>安装...

     

===>运行make install:/ usr / bin / make -C'/home/subrara/.phpbrew/build/php-5.3.29/ext/json''install'>> '/home/subrara/.phpbrew/build/php-5.3.29/ext/json/build.log'2>& 1

     

===>已安装扩展程序。

     

===>创建配置文件/home/subrara/.phpbrew/php/php-5.3.29/var/db/json.ini.disabled   PHP警告:mkdir():在第95行的phar:///usr/bin/phpbrew/src/PhpBrew/Extension/ExtensionManager.php中被拒绝

     

警告:mkdir():第95行的phar:///usr/bin/phpbrew/src/PhpBrew/Extension/ExtensionManager.php中的权限被拒绝   PHP警告:file_put_contents(/home/subrara/.phpbrew/php/php-5.3.29/var/db/json.ini.disabled):无法打开流:phar:/// usr /中没有此类文件或目录第109行的bin / phpbrew / src / PhpBrew / Extension / ExtensionManager.php

     

警告:file_put_contents(/home/subrara/.phpbrew/php/php-5.3.29/var/db/json.ini.disabled):无法打开流:phar:///中没有此类文件或目录第109行的usr / bin / phpbrew / src / PhpBrew / Extension / ExtensionManager.php

     

===>启用扩展json   未安装json扩展。建议:       $ phpbrew ext install json

2 个答案:

答案 0 :(得分:3)

由于许可证冲突,Debian从PHP 5.5rc2开始删除了以前的JSON扩展。

sudo apt-get install php5-json

不要忘记重新启动http服务器。

对于phpbrew,您应该使用+json重新组合构建。

简单方法:
  只需备份你的php配置,以防止它们被重写。

其他:
  尝试使用phpbrew ext install json Wiki

答案 1 :(得分:1)

最后,使用phpbrew ext install json命令安装JSON扩展。感谢vp_arth让我知道这个选项!

第1步:启动sudo chmod 777 /home/subrata/.phpbrew/php/php-5.3.29以获得 php-5.3.29 文件夹的完全权限,以便安装程序可以创建php-5.3.29 / var / db / json.ini.disabled 。最初这是一个权限问题,这些文件夹和文件无法写入php-5.3.29文件夹。

第2步:执行sudo chown $USER:$USER /home/subrata/.phpbrew/php/php-5.3.29以将用户和群组更改为当前用户。

第3步:再次启动phpbrew ext install json并安装扩展程序。

可能还有另一种方法可以做到这一点,但上述方法对我有用。