我正在尝试使用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)
我不确定导致此错误的原因。
答案 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。
中的所有文件