AmazonInstantAccèssPHPSDK phar文件

时间:2015-09-01 16:31:32

标签: php amazon

我正在尝试使用https://github.com/amzn/amazon-instant-access-sdk-php通过php进行亚马逊即时访问。我对phar文件不太熟悉;但我开始明白了。

我将https://github.com/amzn/amazon-instant-access-sdk-php/blob/master/phar-stub.php包含在文件中,如下所示。 (在我重命名为phar文件时修改了一下)

Phar::mapPhar('amazon-instant-access-sdk-php.phar');

require_once 'phar://amazon-instant-access-sdk-php.phar/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';

$classLoader = new Symfony\Component\ClassLoader\UniversalClassLoader();
$classLoader->registerNamespaces(array(
    'Amazon'  => 'phar://amazon-instant-access-sdk-php.phar/src',
    'Psr'     => 'phar://amazon-instant-access-sdk-php.phar/vendor/psr/log',
    'Monolog' => 'phar://amazon-instant-access-sdk-php.phar/vendor/monolog/monolog/src'
));
$classLoader->register();

return $classLoader;

__HALT_COMPILER();

然后当我在另一个文件中时:

require_once('amazon-instant-access-phar-stub.php');

我收到错误:

致命错误:未捕获的异常'PharException',消息'phar的内部损坏“/Applications/MAMP/htdocs/phppos/amazon-instant-access-phar-stub.php”(在stub端截断清单)'中/ Applications / MAMP / htdocs / phppos / amazon-instant-access-phar-stub.php:17堆栈跟踪:#0 /Applications/MAMP/htdocs/phppos/amazon-instant-access-phar-stub.php(17): Phar :: mapPhar('amazon-instant -...')#1 /Applications/MAMP/htdocs/phppos/amazon_link_account.php(3):require_once('/ Applications / M ...')#2 {main}在第17行的/Applications/MAMP/htdocs/phppos/amazon-instant-access-phar-stub.php中引发

我尝试重新下载phar文件并运行不同版本的php(5.3,5.6)

我不确定导致此错误的原因。

1 个答案:

答案 0 :(得分:1)

您可以直接从该版本下载.phar文件。

如果您有.phar文件,则不需要github的源代码。 github上的源代码用于编译.phar文件。

在你的php代码中,你可以这样做:

<?php
//import the phar file directly like you did
require_once('amazon-instant-access-sdk-php.phar’);

//before you initiate the class, you need to use the right name space:
use Amazon\InstantAccess\Signature as signature;
$credentialStore = new signature\CredentialStore();
?>

这个会起作用。

如果要确切查看.phar文件中的内容,可以将其解压缩:

php -r '$phar = new Phar("amazon-instant-access-sdk-php.phar"); $phar->extractTo("/tmp/phar/");'

然后你可以浏览/ tmp / phar /中的.phar。

中的所有文件