JSON在php脚本中不起作用

Posted

技术标签:

【中文标题】JSON在php脚本中不起作用【英文标题】:JSON not working in php script 【发布时间】:2013-08-14 06:16:34 【问题描述】:

我没有让 json_encode 在我的 php 文件中工作。例如,我尝试了从 php.net 获得的这个示例

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

但是没有任何效果。如果我删除 echo 语句,那么我的 php 可以工作,这意味着 php 无法识别 json_encode 代码。

我使用的是 PHP 5.4.16。总结一下,我用的是xampp 1.8.2。

请帮忙?

【问题讨论】:

当您说“没有用”时,究竟发生了什么?您收到错误消息还是没有输出? 这个 PHP 块在您的页面中的什么位置?这是整个页面吗? 尝试使用json_last_error() 查看您遇到的错误。 php.net/manual/en/function.json-last-error.php @StephenTG 没有输出。 ini_set('display_errors', 1); error_reporting(-1); 添加到文件顶部。 【参考方案1】:

如果不提供更多调试蜂,则无法回答此问题。

正如 cmets 所建议的,在一切之前使用这些行来(尝试)启用错误报告:

<?php
header('Content-Type: text/plain');
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
// Json
echo json_last_error();

使用phpinfo(); 获取有关 PHP 版本和 JSON 支持的信息。

这个sn-p会告诉你json函数是否可用:

<?php
if (!function_exists('json_encode')) 
    echo 'PHP not compiled with json support', PHP_EOL;

最后但同样重要的是,检查错误日志

/var/log/httpd*
/var/log/nginx*
/var/log/php-fpm*
/var/log/apache*
.... (linux)

来自Where does PHP's error log reside in XAMPP?

\xampp\apache\logs\error.log

\xampp\php\logs\php_error_log

【讨论】:

text/pain。这让我笑了:) 除了 header() 函数之外的好建议。 A)脚本可能已经向输出缓冲区回显了一些内容,导致更多错误/混乱,B)许多配置使用 html 格式的错误消息,B)没有真正的意义【参考方案2】:

听起来您的脚本中的其他地方可能存在致命错误。确保在 php.ini 中将 display_errors 设置为 On

【讨论】:

以上是关于JSON在php脚本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用

环聊api json在批处理脚本中不起作用

相对路径在 cron PHP 脚本中不起作用

jQuery脚本在CakePHP中不起作用

基于地理位置的查询在 php 的 mongo 中不起作用

尽管配置了.htaccess,但php代码在html中不起作用