2016-02-05 101 views
2

我正在嘗試創建腳本以將我的文件上傳到Google Drive。當我運行它時,它完美地工作。這裏的工作代碼:將PHP腳本轉換爲可執行文件

public function uploadToDrive() 
{ 
    $client = new Google_Client(); 
    $client->setClientId(Mage::getStoreConfig('mtm_google/drive/client_id')); 
    $client->setClientSecret(Mage::getStoreConfig('mtm_google/drive/client_secret')); 
    $client->setRedirectUri(Mage::getStoreConfig('mtm_google/drive/redirect_uri')); 
    $client->setScopes(array('https://www.googleapis.com/auth/drive.file')); 

    session_start(); 

    if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) { 
     if (isset($_GET['code'])) { 
      $client->authenticate($_GET['code']); 
      $_SESSION['access_token'] = $client->getAccessToken(); 
     } else { 
      $client->setAccessToken($_SESSION['access_token']); 
     } 

     $service = new Google_Service_Drive($client); 

     $file = new Google_Service_Drive_DriveFile(); 
     $file->setName('analysis.csv'); 
     $file->setDescription('A test document'); 
     $data = file_get_contents('temp.csv'); 

     $service->files->create($file, array(
      'data' => $data, 
      'mimeType' => 'text/csv', 
      'uploadType' => 'multipart' 
     )); 
     echo 'SUCCESS!'; 
     unlink('temp.csv'); 
    } else { 
     $authUrl = $client->createAuthUrl(); 
     header('Location: ' . $authUrl); 
     exit(); 
    } 
} 

這個腳本應該可以從控制檯執行,而不是從某個URL執行。當我嘗試從控制檯執行此操作時,沒有任何反應,因爲會話變量和重定向是它無法處理的東西。我如何修改此腳本以便從控制檯執行?

+2

消除的東西,只能將可在網絡環境中的任何依賴關係,從控制檯的論點?殺掉$ _SESSION,殺掉'header()',等等等等。 –

+1

給我完整的代碼,我會在我的本地主機上嘗試它 – Monty

+0

@Monty我已經解決了它(與不同的腳本),但真正的欣賞努力。謝謝! – MapleSyrup

回答

2

簡單地定義/套變量:$_GET, $_SESSION, ....
這些變量都可以通過像使用$argv[]

+0

但是我怎麼能自動化他們,當令牌每次都不一樣?我無法硬編碼它的價值? – MapleSyrup