【问题标题】:Call to undefined function json_encode - Drupal site setup on Ubuntu 14.04 and phpbrew调用未定义函数 json_encode - Ubuntu 14.04 和 phpbrew 上的 Drupal 站点设置
【发布时间】:2016-06-20 09:38:22
【问题描述】:

我是 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 a:3:{s:16:"enabled_variants";a:27:{s:4:"intl";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: "phar";b:1;s:5:"posix";b:1;s:8:"readline";b:1;s:7:"sockets";b:1;s:9:"tokenizer ";b:1;s:4:"curl";b:1;s:7:"openssl";b:1;s:3:"zip";b:1;}s:17:"disabled_variants" ;a:0:{}s:13:"extra_options";a: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/中没有这样的文件或目录bin/phpbrew/src/PhpBrew/Extension/ExtensionManager.php 在第 109 行

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

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

【问题讨论】:

    标签: php json ubuntu


    【解决方案1】:

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

    sudo apt-get install php5-json
    

    别忘了重启你的 http 服务器。


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

    简单的方法:
    只需备份您的 php 配置以保护它们不被重写。

    其他:
    尝试使用phpbrew ext install jsonWiki

    【讨论】:

    • 感谢您的快速回复!问题是因为我使用phpbrew 安装了PHP,apt-get 安装会将包添加到我当前的PHP 版本并编译吗?这会保持使用phpbrew 进行的所有设置吗?再次抱歉。我可能会问很多幼稚的问题。请考虑我的新手状态!
    • 我切换到 5.3.29 (sudo phpbrew switch php-5.3.29) 并尝试了phpbrew ext install json stable,但结果是 # WARNING: curl extension may be required for fetching data。错误:未定义 PHPBREW_PHP 环境变量。此扩展命令要求您从构建列表中指定 PHP 版本。看起来您还没有从使用 PHPBrew 构建的版本切换到版本。建议:请至少安装一个您喜欢的PHP版本并切换到它。
    【解决方案2】:

    最后使用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 并安装扩展程序。

    可能还有其他方法可以做到这一点,但以上方法对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2015-08-25
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多