【发布时间】:2013-12-22 19:43:28
【问题描述】:
刚刚注意到一些东西,但我不确定为什么这是真的,或者为什么它与标准脚本不同,也许有人可以帮助我解决这个谜语。当从命令行运行包含 json_* 函数的 PHP 脚本作为可执行文件时,我将获得带有以下脚本的 Fatal error: Call to undefined function json_encode() in /var/www/jsontest.php on line 6
#!/usr/bin/php -n
<?php
$arr = array('foo', 'bar', 'baz');
print_r($json = json_encode($arr));
print_r(json_decode($bar));
在尝试解码标准干净 json 输入(通过 jsonlint 验证)时,json_decode() 也会发生这种情况
上述脚本在 Linux/DEB 终端中运行如下...
$ chmod +x jsontest.php
$ ./jsontest.php
通过我的本地网络服务器运行它,我收到了预期的输出
#!/usr/bin/php -n ["foo","bar","baz"]Array ( [0] => foo [1] => bar [2] => baz )
发生了什么事?为什么 JSON 在解释为可执行文件时不可用?
PHP 版本是PHP 5.5.3-1ubuntu2 (cli) (built: Oct 9 2013 14:49:24),任何可能想要它的人都可以在我的Ubuntu One Account 上发布 PHPInfo
【问题讨论】:
-
“php -ni | grep json”给你什么?
-
尝试在两个环境中使用
phpinfo(),并确保您使用的是相同版本的 PHP 和 php.ini 文件。您可能将扩展名加载到一个 ini 文件中,而不是另一个。 -
@JesperBunnyJensen 空字符串
标签: php json bash ubuntu command-line-interface