作为CLI脚本调用时,PHP JSON函数不可用?

刚刚注意到了一些东西,但我不知道为什么这是真的,或者为什么它不像一个标准的脚本,也许有人可以帮助我解决这个谜。 json_*运行包含json_*函数的PHP脚本作为可执行文件时,将会发生Fatal error: Call to undefined function json_encode() in /var/www/jsontest.php on line 6使用以下脚本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_decode()试图解码标准清洁jsoninput时(通过jsonlintvalidation)

上面的脚本正在运行如下,在一个Linux / DEBterminal…

 $ chmod +x jsontest.php $ ./jsontest.php 

通过运行这个通过我的本地Web服务器,虽然,我收到我的期望输出

 #!/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)和任何人可能需要它的PHPInfo发布在我的Ubuntu One帐户

我猜这里的问题是你的php.ini文件 – 当作为CLI运行时,PHP使用不同的ini文件。 看看爆炸丸对这个问题的回答 :

从命令行运行php时,可以使用-c或–php-ini参数指向要使用的php.ini文件。 这将允许你使用一个php.ini文件。 如果您正在运行脚本,也可以将php别名为php -c / path / to / php.ini。