PHP json_encode从https失败

时间:2012-12-20 16:57:07

标签: php https json

我的php脚本在作为安全页面服务时失败,并且调用json_encode(),但不是。代码是从XHR调用的更大脚本中提取的。 PHP Version 5.2.0。,Apache / 1.3.34(Unix)。

问题来源:PHP,我的ISP还是我?

要演示,请以4种方式调用此脚本:

https://www.camdenac.com/test_json_encode.php?encode=0 =>工作,安全协议,不调用json_encode() https://www.camdenac.com/test_json_encode.php?encode=1 =>失败,安全协议,调用json_encode()。

在第一种情况下,你会看到一些html然后php回应结果。 在第二种情况下,您将只看到html;没有php输出。

/*
Try these 2 links also from non-secure protocol.
http://www.camdenac.com/test_json_encode.php?encode=0  => works.
http://www.camdenac.com/test_json_encode.php?encode=1  => works.
*/

<?php
$encode= 0;
if( isset($_GET['encode']) ){
    $encode= substr(trim($_GET['encode']),0,1);
}

$dummy= array(1,2,3,4,5);
$json="We did not call json_encode.";

if($encode){
    $json= json_encode($dummy);
}

echo '<p>IT WORKS!</p>';
echo '<p>Host protocol is: '.$_SERVER['HTTP_HOST'].'</p>';
echo '<p>Query string is: '.$_SERVER['argv'][0].'</p>';
echo '<p>HTTPS is: '.$_SERVER['HTTPS'].'</p>';
echo '<p>json encoding is: '.$json.'</p>';
echo '<p>Array dump follows:</p>';

var_dump($dummy);
?>

1 个答案:

答案 0 :(得分:1)

我认为你的php版本是旧的,不包含json_encode函数。如果要使用它,可能需要更新php版本。