-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Seems not to work with PHP8 - Guzzle issue? #29
Comments
The dependency rackspace/php-opencloud (which itself has this old guzzle as a dependency) is no longer supported and they recommend switching to php-opencloud/openstack There are several flysystem adapters for openstack such as: Here's some code to help you get started, as authenticating Rackspace through OpenStack isn't exactly straightforward. This uses php-opencloud/openstack v3.10.0 $authUrl = 'https://identity.api.rackspacecloud.com/v2.0/';
$httpClient = new \GuzzleHttp\Client([
'base_uri' => \OpenStack\Common\Transport\Utils::normalizeUrl($authUrl),
'handler' => \GuzzleHttp\HandlerStack::create(),
]);
$openstack = new \OpenStack\OpenStack([
'authUrl' => $authUrl,
'identityService' => RackspaceIdentityService::factory($httpClient),
'region' => '{{ ADD RACKSPACE REGION }}',
'user' => [
'username' => '{{ ADD RACKSPACE USERNAME HERE }}',
'apiKey' => '{{ ADD RACKSPACE API KEY HERE }}',
],
]);
$container = $openstack->objectStoreV1([
'catalogName' => 'cloudFiles',
])
->getContainer('{{ ADD CONTAINER NAME HERE }}');
$adapter = new \Nimbusoft\Flysystem\OpenStack\SwiftAdapter($container);
$filesystem = new \League\Flysystem\Filesystem($adapter); You also need to create the identity service referenced in the code: use OpenStack\Common\Auth\IdentityService;
use OpenStack\Identity\v2\Models\Catalog;
use OpenStack\Identity\v2\Models\Token;
use OpenStack\Identity\v2\Service as V2Service;
class RackspaceIdentityService extends V2Service implements IdentityService
{
public function authenticate(array $options = []): array
{
$response = $this->execute([
'method' => 'POST',
'path' => 'tokens',
'skipAuth' => true,
'params' => [
'username' => [
'type' => 'string',
'required' => true,
'path' => 'auth.RAX-KSKEY:apiKeyCredentials',
],
'apiKey' => [
'type' => 'string',
'required' => true,
'path' => 'auth.RAX-KSKEY:apiKeyCredentials',
],
],
], $options['user']);
$token = $this->model(Token::class, $response);
$serviceUrl = $this->model(Catalog::class, $response)->getServiceUrl(
$options['catalogName'],
$options['catalogType'],
$options['region'],
$options['urlType']
);
return [$token, $serviceUrl];
}
} |
Instantiating Flysystem/Rackspace fails with PHP8. I've had this working with PHP7.4 for at least a year or so.
On PHP8, we get:
Any fix for this?
The text was updated successfully, but these errors were encountered: