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脚本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章