刚刚注意到了一些东西,但我不知道为什么这是真的,或者为什么它不像一个标准的脚本,也许有人可以帮助我解决这个谜。 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。