PHP Fatal error: Call to undefined function json_encode()
「PHP 5.5でPHP JSONが削除されました」という記事の無料翻訳で、なぜこれが発生したのですか?
猫の下。
何が起こっているの?
Crockford( Douglas Crockford )JSON-広く使用されているデータ交換フォーマットであり、最初のライセンス契約に次のように記述されているため、LinuxディストリビューションのPHPとライセンスの競合が発生しました。
「ソフトウェアは悪ではなく、善のために使用されます。」
これでは、JSONライセンスは、Free Software Foundationからの自由数0で収束しません。
「プログラムを任意の目的で実行する自由。」
(プログラムはあらゆる目的で自由に使用できます)
これは取るに足らないように見えるかもしれませんが、json.orgの著者は「丁寧に」ライセンスの修正を拒否しています。 答えは、Debian、Fedora、およびその他のディストリビューションのPHP 5.5rc2の標準PHP JSON拡張を削除することでした。
Linuxディストリビューションのパッケージマネージャーがjson拡張機能をパッケージとして提供し始めるまで、json関数は利用できない場合があります。 これらの標準関数を使用するコードはすべてエラーになります。
PHP Fatal error: Call to undefined function json_encode() PHP Fatal error: Call to undefined function json_decode()
(翻訳者のメモ:ubuntuサーバー13.10 PHP 5.5.3-1ubuntu2では、JSON拡張は個別のphp5-jsonパッケージです)
影響を受ける人々のためのソリューション
PHPのJSONはやがて他の拡張機能によって提供されますが、エンドユーザーには透過的であることが望まれますが、更新を待たずにこの問題の影響を受ける場合は、Remy(jsonc by Remi Collet)からPECL JSON-C拡張機能をインストールできますjson-cライブラリを使用します。
CentOS 5.9の私のソリューションは、YUMのRemyリポジトリからPECL JSON-C拡張機能をインストールすることでした。
yum --enablerepo=remi install php-pecl-jsonc
Debianディストリビューションの場合、Ondřejのサードパーティのリポジトリが役立つ場合があります(翻訳者のメモ:これは約だと思います)
拡張機能を手動でインストールした場合、php.iniに追加することを忘れないでください
参照:
bugs.php.net/bug.php?id=63520
github.com/remicollet/pecl-json-c
オリジナル記事
www.json.org/license.html
www.gnu.org/philosophy/free-sw.html
翻訳者から
この記事の日付は8月9日であり、あまり意味がありません(たとえば、新鮮なubuntuの場合、php5-jsonパッケージがあります)。 この翻訳を公開する理由は2つあります。
- 私はそれが私のものではないことを懸念している人々に通知したい。 サーバーをUbuntu 13.10にアップグレードした後、機能の一部を集めて解決策を見つける理由を探すのに少し時間を費やしました。
- jsonをphpから削除するまさにその理由は、私には非常に思えました...興味深いことに、私がそう言うかもしれません。 そして、削除の理由とjson.orgのライセンスに上記の行が存在するという事実。