1

PHP code:

<?php
$data = array('1','4','67','34');

$result = shell_exec('C:/Python27/python C:/xampp/htdocs/123.py ' . escapeshellarg(json_encode($data)));

$resultData = json_decode($result, true);

var_dump($resultData);


?>

Python Code:

import sys, json

# Load the data that PHP sent us
try:
    data = json.loads(sys.argv[1])
except:
    print "ERROR"
    sys.exit(1)

# Generate some data to send to PHP
result = {'23','4'}

# Send it to stdout (to PHP)
print json.dumps(result)
Ashwini Chaudhary
  • 244,495
  • 58
  • 464
  • 504
abcdxx
  • 207
  • 1
  • 3
  • 12

2 Answers2

1

There is incorrect data for json.dump() in Python

# Generate some data to send to PHP
result = {'23','4'}

So this give error, not json string

import sys, json

# Generate some data to send to PHP
result = {'23','4'}

# Send it to stdout (to PHP)
print json.dumps(result)

and PHP get NULL as $result from Python so you get NULL on screen - in browser

Use (for example):

# Generate some data to send to PHP
result = {'a':'23','b':'4'}

and json.dump() will work fine.

furas
  • 134,197
  • 12
  • 106
  • 148
  • @MichaelMallett In OP code I found only problem with `json` returned by Python. Python has problem with `json.dump({'23','4'})` so it returns empty string, so PHP gives result NULL (on the screen - in browser). And OP asked for NULL problem. I tested it on computer with Linux Mint, Python 2.7.x, WWW server Apache 2.2.x, PHP 5.3.x. Did you found another explanation ? – furas Dec 11 '13 at 06:36
  • are you using shell_exec() to run the python script in php? that will return null if there's a problem finding/executing the python script – b_dubb Apr 20 '17 at 15:12
1

Add 2>&1 (stdout & stderr) behind the command like so:

$result = shell_exec('C:/Python27/python C:/xampp/htdocs/123.py ' . escapeshellarg(json_encode($data)) . ' 2>&1');