当前位置: 首页 > 知识库问答 >
问题:

从运行在Azure Web App上的PHP访问Blob存储

袁鸿达
2023-03-14

我试图让运行在Azure Web App上的PHP wiki访问我的Azure Blob存储,以引用其内容,但它在引用Blob容器时似乎遇到了一些问题。

根据一些参考资料,我已经在我的应用程序中安装了composer和microsoft/windowsazure插件。供应商文件夹的位置是D:\site\wwwroot\wiki\bar\vendor。

我还使用下面的代码创建index2.php(目前使用index.php)。

<?php

ini_set("display_errors", On);
error_reporting(E_ALL);

require_once 'vendor\autoload.php';

use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;

// Create blob REST proxy.
$connectionString = "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<key>;";
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);


try {
    // List blobs.
    $blob_list = $blobRestProxy->listBlobs("wiki");
    $blobs = $blob_list->getBlobs();

    foreach($blobs as $blob)
    {
        echo $blob->getName().": ".$blob->getUrl()."<br />";
    }
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // http://msdn.microsoft.com/library/azure/dd179439.aspx
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

然而,当它运行时,我出现了这个错误。

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'The path of a URI with an authority must start with a slash "/" or be empty' in D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php:693
Stack trace:
    #0 D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php(502): GuzzleHttp\Psr7\Uri->validateState()
    #1 D:\home\site\wwwroot\wiki\bar\vendor\microsoft\azure-storage\src\Common\Internal\ServiceRestProxy.php(124): GuzzleHttp\Psr7\Uri->withPath('wiki')
    #2 D:\home\site\wwwroot\wiki\bar\vendor\microsoft\azure-storage\src\Blob\BlobRestProxy.php(1181): MicrosoftAzure\Storage\Common\Internal\ServiceRestProxy->send('GET', Array, Array, Array, 'wiki', 200)
    #3 D:\home\site\wwwroot\wiki\bar\index2.php(18): MicrosoftAzure\Storage\Blob\BlobRestProxy->listBlobs('wiki')
    #4 {main} thrown in D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php on line 693

难道不能用这种php代码从这个位置访问存储吗?

共有1个答案

薄涵衍
2023-03-14

我找到了解决办法。

正如错误messege所说,有必要在容器名“wiki”之前加“/”。关于azure的说明。微软com没有贴上这个标志,所以我仍然找不到它是解决方案的原因。。。

 类似资料:
  • 我正在尝试将应用程序在Azure上投入生产。此应用程序由一个webapp(运行Docker容器)组成,该应用程序应该与Azure存储帐户(blob)通信。 将Web应用的所有出站IP地址添加到我的存储帐户的防火墙设置后,我仍然没有访问Blob的权限。错误如下:“此请求无权执行此操作。” 然而,当我在本地运行我的应用程序,并将我的本地IP添加到这些相同的防火墙设置中时,它可以工作。当我没有将其添加到

  • 我正在ec2实例上运行neo4j,我可以看到它正在运行http://ip:7474/browser在ec2上,我无法在elastic beanstalk上通过php访问它。文件路径显示空白页。 我还将弹性beanstalk实例的公共ip作为自定义TCP添加到linux ami实例中。有什么我遗漏的吗?我真的很感谢你的帮助。提前谢谢。

  • 问题内容: 我正在尝试将Jenkins与AWS CodeCommit集成。Jenkins在具有Ubuntu 14.04的AWS EC2实例上运行。 我关注了此博客文章:http : //blogs.aws.amazon.com/application- management/post/Tx1C8B​​98XN0AF2E/Integrating-AWS-CodeCommit-with- Jenkin

  • 我有一个运行在EC2机器上的Nifi实例,并且我正在尝试访问一个受限制的s3 bucket。因为不建议手动生成访问密钥,所以我希望为机器提供访问外部桶的正确IAM角色。 我给了EC2机器一个角色,这个角色似乎适用于除NIFI之外的所有应用程序。是否有一些特殊的配置我需要设置Nifi不使用手动访问键?

  • 问题内容: 我在Ubuntu上获取对.mdb文件(MS-Access db)的访问权限时遇到问题。我需要完全访问权限(也可以读写)。 最初,项目是使用odbc在Windows上构建的(并且一切正常。)但是当我在linux服务器上移动它时出现了问题。 目前,已安装用于odbc的PHP扩展。但是我找不到用于Access的任何免费的ODBC驱动程序。我尝试使用MDB工具,但似乎仅适用于阅读。 也许有人可

  • 我有一个powershell脚本,它在连接到Azure blob存储和AzureSQL的Azure VM中运行。blob存储和SQL都受到防火墙的保护,blob存储是VNet的一部分。VM位于自己的VNet上。我将VM的IP地址插入Azure存储和sql azure中。对AzureSQL访问很好,但是当我尝试连接到blob存储时,我收到错误消息 “Get-AzStorageContainer:未授