Problems with JSON and PHP

Mark Moellering markmoellering at psyberation.com
Fri Feb 1 14:14:29 UTC 2019


On Fri, Feb 1, 2019 at 2:06 AM Doug Hardie <bc979 at lafn.org> wrote:

> I have installed apache24, php72 and a host of other somewhat related php
> packages.  I can't seem to get apache to run a php script that includes
> json_encode.
>
> test# pkg info | grep php
> mod_php72-7.2.14               PHP Scripting Language
> php72-7.2.14                   PHP Scripting Language
> php72-curl-7.2.14              The curl shared extension for php
> php72-filter-7.2.14            The filter shared extension for php
> php72-gd-7.2.14                The gd shared extension for php
> php72-hash-7.2.14              The hash shared extension for php
> php72-json-7.2.14              The json shared extension for php
> php72-mbstring-7.2.14          The mbstring shared extension for php
> php72-mysqli-7.2.14            The mysqli shared extension for php
> php72-openssl-7.2.14           The openssl shared extension for php
> php72-pear-1.10.6              PEAR framework for PHP
> php72-pear-Services_JSON-1.0.3 PHP implementation of json_encode/decode
> php72-pecl-mcrypt-1.0.1        PHP extension for mcrypt, removed in PHP 7.2
> php72-pecl-xdebug-2.6.1        Xdebug extension for PHP
> php72-session-7.2.14           The session shared extension for php
> php72-xml-7.2.14               The xml shared extension for php
> php72-zip-7.2.14               The zip shared extension for php
> php72-zlib-7.2.14              The zlib shared extension for php
>
> test# pkg info | grep apache
> apache24-2.4.38                Version 2.4.x of Apache web server
>
> test# pkg info | grep mod_
> mod_php72-7.2.14               PHP Scripting Language
>
> Server has been rebooted several times.
>
> test# freebsd-version -ku
> 12.0-RELEASE
> 12.0-RELEASE
>
> In /usr/local/www/apache24/data is the file:
> test# more /usr/local/www/apache24/data/test.php
> <?php
> print "Hello world";
>
> $myObj = (object) array();
> $myObj->name = "John";
> $myObj->age = 30;
> $myObj->city = "New York";
>
> $myJSON = json_encode($myObj);
>
> echo $myJSON;
> ?>
>
>
> Running it by hand works:
> test# php /usr/local/www/apache24/data/test.php
> Hello world{"name":"John","age":30,"city":"New York"}test#
>
> Accessing it via a browser yields:
> Hello world
>
> and an error:
> test# tail -1 /var/log/httpd-error.log
> [Thu Jan 31 22:29:25.506018 2019] [php7:error] [pid 1586] [client
> 10.0.1.251:53459] PHP Fatal error:  Uncaught Error: Call to undefined
> function json_encode() in /usr/local/www/apache24/data/test.php:9\nStack
> trace:\n#0 {main}\n  thrown in /usr/local/www/apache24/data/test.php on
> line 9
>
> The info.php file in that directory works properly when accessed via the
> browser.  Obviously I have got something setup wrong.  I have not been able
> to figure it out.  ktrace never shows any attempt to access anything I can
> see identifiable with json_encode.  I would appreciate any ideas on how to
> fix this.  Thanks
>
>
> -- Doug
>
>  I use php and my biggest complaint is the way it handles errors.  I think
what is happening is that your Object Definition has a syntax error but php
is complaining about the json_encode.
I believe (from the php.net docs) that it should be

$myObj = new stdClass();
> $myObj->name = "John";
> $myObj->age = 30;
> $myObj->city = "New York";
>

I highly recommend the php.net documentation.  It shows different ways to
do this and it looks like you merged two different styles that are
incompatible.
As a suggestion, in the future, assume it is a php problem and try Stack
Exchange first.  If everyone there says, "everything looks good, could be
your distro / OS", then post to the FreeBSD List and explain what steps you
have already taken.  It will help keep responses much more friendly.

-- Mark


More information about the freebsd-questions mailing list