2011-10-26 67 views
0

我正在嘗試使用PHP爲亞馬遜AWS api創建一個簽名請求。我不是太熟悉PHP所以這個問題似乎非常明顯,所以我很抱歉 -PHP - 如何包含一個php類文件並執行一個函數

Amazon提供的示例代碼生成簽名要求使用他們的API - 它可以在這裏找到:

http://aws.amazon.com/code/AWIS/402

他們的狀態指示簡單:

Run php urlinfo.php ACCESS_KEY_ID SECRET_ACCESS_KEY site 

但我不知道如何 「跑」 的PHP文件。我的直覺是,包括PHP文件,所以我可以作出其公共urlInfo函數的調用:

UrlInfo($accessKeyId, $secretAccessKey, $site) 

,但如果我把它給:

<?php require_once ('urlinfo.php'); ?> 

頁面自動生成消息:

Usage: ACCESS_KEY_ID SECRET_ACCESS_KEY site 

那麼如何從我的索引文件中調用這個php文件並將它傳遞給它需要的參數呢?

回答

1

的urlinfo .php腳本旨在通過PHP命令行界面運行,並希望通過cli傳遞參數。

如果您刪除代碼的以下部分:

if (count($argv) < 4) { 
    echo "Usage: $argv[0] ACCESS_KEY_ID SECRET_ACCESS_KEY site\n"; 
    exit(-1); 
} 
else { 
    $accessKeyId = $argv[1]; 
    $secretAccessKey = $argv[2]; 
    $site = $argv[3]; 
} 

然後執行:

$accessKeyId = "youkeyid"; 
$secretAccessKey = "yoursecret"; 
$site = "yoursite"; 

include('urlinfo.php'); 

預期它將工作。

0

運行該文件的說明意味着您應該將該命令鍵入命令提示符。

示例代碼只是表示樣本。因此,他們試圖讓您輕鬆運行它,而無需將其放入Web服務器。相反,你可以直接在它上面執行php。

如果你想在網絡服務器上運行它,你需要重寫這個例子。

1

刪除urlinfo.php文件底部的以下代碼。

if (count($argv) < 4) { 
    echo "Usage: $argv[0] ACCESS_KEY_ID SECRET_ACCESS_KEY site\n"; 
    exit(-1); 
} 
else { 
    $accessKeyId = $argv[1]; 
    $secretAccessKey = $argv[2]; 
    $site = $argv[3]; 
} 

$urlInfo = new UrlInfo($accessKeyId, $secretAccessKey, $site); 
$urlInfo->getUrlInfo(); 

然後你可以使用下面的代碼來生成你需要的urlinfo。

$urlInfo = new UrlInfo($accessKeyId, $secretAccessKey, $site); 
$urlInfo->getUrlInfo(); 
+0

所以我想我有點困惑 - 每次我想要訪問Web服務時都不需要運行它?如果我在本地主機上運行這個功能,我該如何使用「網站」?我可以在本地主機上運行它嗎? – mheavers

1

假設你有UNIX命令行:

類型看「的PHP」在命令行,如果你的shell已經知道了您的php bin文件是。如果你得到一個路徑,鍵入路徑來運行該文件後跟參數ACCESS_KEY_ID SECRET_ACCESS_KEY網站

例子: 在/ usr/local/bin目錄/ PHP urlinfo.php ACCESS_KEY_ID SECRET_ACCESS_KEY網站


相關問題