не будучи произведенным в терминале при выполнении сценария PHP

test3cron.php

 <?php
@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);
}

то, когда я запускаю этот скрипт в netbeans (shift+f6), получает следующий вывод.

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

тот же сценарий, работающий сценарием оболочки, который это (произвело), не показывает ничто (пустое).

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

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

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

0
задан 6 August 2015 в 15:02

1 ответ

cli версия php имеет несколько различий с cgi. Один из них - то, что заголовки печатаются.

, Так как Ваш код запускает сессию, которая не будет существовать и затем проверяет на данное значение $ _SESSION ['состояние'], это будет всегда заканчиваться в коде header('Location: ' ...), который ничего не произведет, поскольку cli не делает заголовков.

0
ответ дан 1 October 2019 в 05:20

Другие вопросы по тегам:

Похожие вопросы: