Getting empty output when running PHP script in terminal

the following code works fine in netbeans but not in terminal using a shell script. If anyone has an idea please share it.

test3cron.php

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

@ob_start();
session_start();
$callbackUrl = "http://mgstore/test3cron.php";
$temporaryCredentialsRequestUrl = "http://mgstore/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://mgstore/admin/oauth_authorize';
$accessTokenRequestUrl = 'http://mgstore/oauth/token';
$apiUrl = 'http://mgstore/api/rest';
$consumerKey = 'd9a371ca7661bee18de8d75f50b7e386';
$consumerSecret = '51486d1b2bd688a927a3eced64ed803e';
error_reporting(E_ALL ^ E_NOTICE);

if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
    $_SESSION['state'] = 0;
}
try {
    $authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
    $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
    $oauthClient->enableDebug();
    $oauthClient->disableSSLChecks();


    if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
        $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
        $_SESSION['secret'] = $requestToken['oauth_token_secret'];
        $_SESSION['state'] = 1;
        header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);

        exit;
    } else if ($_SESSION['state'] == 1) {

        $oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
        $accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
        $_SESSION['state'] = 2;
        $_SESSION['token'] = $accessToken['oauth_token'];
        $_SESSION['secret'] = $accessToken['oauth_token_secret'];
        header('Location: ' . $callbackUrl);

        exit;

    } else {

        $oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
        $resourceUrl = $apiUrl . "/customers?page=400&limit=1";
        $oauthClient->fetch($resourceUrl, array(), 'GET', array("Content-Type" => "application/json", "Accept" => "*/*"));
        $customerList = json_decode($oauthClient->getLastResponse());

    }
    if (is_array($customerList) || is_object($customerList)) {
        foreach ($customerList as $object) {
            $entityid = $object->entity_id;
            echo "ENTITY ID:" . "$entityid" . "<br>";

            $name1 = $object->firstname;
            $name2 = $object->lastname;
            $customersince = $object->created_at;
            echo "Created at:$customersince<br>";
            $name = $name1 . " " . $name2;
            echo "NAME:" . "$name" . "<br>";
            $email = $object->email;
            echo "EMAIL:" . "$email" . "<br>";
        }
    }
} catch (OAuthException $e) {
    print_r($e);
}

      

when i run the above script in netbeans (shift + f6) i get the following output:

ENTITY ID:167
Created at:2015-07-31 12:37:04
NAME:shahid md
EMAIL:shahid@gmail.com

      

the same script, i try to run in terminal as follows, but it shows empty output.

cron.sh

#!/bin/bash

SCRIPTPATH=$( cd $(dirname $0) ; pwd -P )
PHP='/usr/bin/php'
# tailf /var/log/cron

cd $SCRIPTPATH
# TO RUN ALL CORN JOBS

$PHP -q test3cron.php

      

use the following command to run the script file: but I am not getting anything here.

rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$ ./cron.sh

rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$

      

and I tried the following link:

https://magento.stackexchange.com/questions/75414/running-the-magento-rest-api-php-example

  rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$ php -S
 localhost:8088 test3cron.php

**Response as follows:**

 PHP 5.5.9-1ubuntu4.11 Development Server started at Tue Aug 11
 10:32:54 2015 Listening on http://localhost:8088 Document root is
 /home/rizwan/PHP-workspace/mgstore Press Ctrl-C to quit.

      

+3


source to share


1 answer


You have enabled output buffering through @ob_start();

, but never complete output buffering ( ob_end_flush();

). Also, the installation error_reporting(E_ALL ^ E_NOTICE);

disables error reporting NOTICE

(just set it to -1

).

You also access $_SESSION

from the CLI script. It might be made to work, but it might not be what you expect.

But it seems to me that what is actually happening here is that you just enter the execution path, which produces no output. See here:



if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
        $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
        $_SESSION['secret'] = $requestToken['oauth_token_secret'];
        $_SESSION['state'] = 1;
        header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);

        exit;

      

Since this is not an HTTP request, $_GET['oauth_token']

it will not be installed, but $_SESSION['state']

will 0

and therefore will be false. All it does is get the token, output the header, and exit the script. I bet if you put echo

in this branch of your code, you will see it printed. My recommended course of action for debugging is to add instructions echo

and track the code execution path.

0


source







All Articles